top / index / prev / next / target / source

2011-12-24 diary: Blanco2g のシンプル・サンプル【Apache Struts 1.x + DB 接続】

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

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 は特殊な実行時ライブラリなしで実現することができます。

登場キーワード


この日記について