top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
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 は特殊な実行時ライブラリなしで実現することができます。