Blanco2g のシンプル・サンプル【Apache Struts 1.x + DB 接続】
Blanco2g による Apache Struts 用サンプルを書きました。
この例では @BlancoStrutsLogic, @BlancoStrutsForm, @BlancoStrutsForward, @BlancoStrutsReset, @BlancoGetterSetter といった Blanco2g 用アノテーションが利用されています。
★実際に利用したいクラス名に対して「Abstract」というプレフィックスを付与してコーディングするのは Blanco2g のルールです。
★ActionForm に対しては「*Logic」というクラス名で処理を記述します。(*Logic のインスタンスはリクエストごとに作成されます)
★1 つの FORM アクションごとに 1 つの Logic を作成する前提となっています。ボタンによる呼び分けについては JavaScript 側で分岐するなどの必要があります。
package sample.struts; import java.sql.Connection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionMapping; import blanco.fw.BlancoInject; import blanco.struts.BlancoStrutsForward; import blanco.struts.BlancoStrutsLogic; /** * サンプル・ロジック。 */ @BlancoStrutsLogic(path = "/run", scope="session") public abstract class AbstractSampleLogic { /** * 正常系の次画面。 */ @BlancoStrutsForward(path = "/next.jsp") private static final String FORWARD_SUCCESS = "success"; /** * 異常系画面。 */ @BlancoStrutsForward(path = "/error.jsp") private static final String FORWARD_ERROR = "error"; /** * ビジネスロジック * * @param mapping * @param form * @param request * @param response * @param conn * メソッド・パラメータによるデータベース接続インジェクション。 * このメソッドの呼び出し直前にデータベース・トランザクションが開始され * 、このメソッドの終了直後にロールバックとトランザクション終了が実施されます。 * @return * @throws Exception */ public String execute(final ActionMapping mapping, final SampleForm form, final HttpServletRequest request, final HttpServletResponse response, @BlancoInject final Connection conn) throws Exception { // ここに実際の処理を記述します。 // 必要に応じて、データベーストランザクションをコミットします。 if (true) { return FORWARD_SUCCESS; } else { return FORWARD_ERROR; } } }
Form の記述もかなりシンプルなものになります。
package sample.struts; import org.apache.struts.action.ActionForm; import blanco.gettersetter.BlancoGetterSetter; import blanco.struts.BlancoStrutsForm; import blanco.struts.BlancoStrutsReset; /** * サンプル・フォーム。 */ @BlancoStrutsForm public abstract class AbstractSampleForm extends ActionForm { private static final long serialVersionUID = 1L; /** * 文字列のフィールド。 */ @BlancoGetterSetter @BlancoStrutsReset protected String field1 = ""; /** * 整数のフィールド。 */ @BlancoGetterSetter protected int field2 = -1; }
このクラスの利用のための struts-config.xml の一部も自動生成されます。必要なソースコードは Blanco2g による自動生成により生成されます。
このような処理を、Blanco2g は特殊な実行時ライブラリなしで実現することができます。