最近、Terasolunaフレムワークで、Hello Worldのようなプロジェクトを構築・開発しました。ここでログインサンプルを例として、Terasolunaはどういう仕組みで動いてるかを解説します。
正直に言うと、Terasolunaフレムワークは若干煩雑だと感じてます。そのため、プロジェクト開発でフレムワークをTerasolunaご選定する際に、プロジェクトのコストや納期などを十分にご検討した上で選定しましょう。なぜなら、Terasoluna習得の時間や、開発効率低いなどなどの問題を全て考慮しなければいけない。
もちろん、Terasolunaのメリットもあります。それは日本国内でIT開発の大手会社がおススメフレムワークです。
ガラパゴス化のイメージが強いけど、フレムワークの“骨”はstruts+spring+iBatisのため、この3つのフレムワークが実現できるものは、Terasolunaがほぼ同じ品質で実現できます。
それでは、Terasolunaでログインサンプルと見ながら、Terasolunaの処理流れを見てみましょう。
上記処理フローでお気にしているところを解説します:
①ログインページ(login.jsp)
<ts:form action="/loginBL.do" method="POST">
ログインID:<html:text name="_loginForm" property="userName" /><br />
パスワード:<html:password property="userPass" />
<br />
<html:submit value="ログイン" />
</ts:form>
②バリデーションチェック(validation-login.xml)
※ここでJSPページで入力した項目のバリデーションチェックを行う。
<form name="/loginBL">
<field property="userName" epends="required,email,maxlength">
<arg key="会員ID" name="required" resource="false" position="0"/>
<arg key="会員ID" name="email" resource="false" position="0" />
<arg key="会員ID" name="maxlength" resource="false" position="0" />
<arg key="${var:maxlength}" name="maxlength" resource="false" position="1" />
<var>
<var-name>maxlength</var-name>
<var-value>150</var-value>
</var>
</field>
<field property="userPass" depends="required, alphaNumericString, minlength, maxlength">
<arg key="パスワード" resource="false" position="0" />
<arg key="${var:minlength}" name="minlength" resource="false" position="1" />
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
③BlogicAction(ここでLoginAction.javaとする)
ここで処理ロジックが入れられます。
必要な場合、(エラー)メッセージの設定や、業務ロジック処理に渡すDataの整形などの処理が入れる。
このBlogicActionに関わる2つの設定ファイル(struts-login.xmlとmodulueLoginContext.xml)を気を付けてください。
例:struts-login-config.xmlの設定:
<!-- ログイン画面への遷移 -->
<action path="/loginSCR"
name="_loginForm"
scope="session">
<set-property property="cancelPopulate" value="true" />
<forward name="success" module="/jsp/login" path="/login.jsp" />
</action>
<!-- ログインリクエスト(/loginBL) -->
<action path="/loginBL"
name="_loginForm"
input="/loginSCR.do"
scope="session">
<forward name="success" path="/sucessSCR.do"/>
<forward name="returnLogin" module="/" path="/loginSCR.do"/>
<forward name="default" path="/loginSCR.do"/>
</action>
例:moduleLoginContext.xmlの設定:
<!-- ログイン画面へのForwardAction -->
<bean name="/login/loginSCR" scope="singleton" class="jp.terasoluna.fw.web.struts.actions.ForwardAction"/>
<!-- ログインリクエストBLogicAction -->
<bean name="/login/loginBL" scope="singleton" class="net.zanmai.terasoluna.login.action.LoginAction">
<property name="loginBLogic" ref="loginBLogic"/>
</bean>
<!-- ログインリクエストのビジネスロジックBLogic -->
<bean id="loginBLogic" scope="singleton" class="net.zanmai.terasoluna.login.blogic.loginBLogicImpl">
<property name="queryDAO" ref="queryDAO"/>
</bean>
上記、struts-login-config.xmlはリクエストURLとフォーワードJSPページの設定情報を記入します。
moduleLoginContextファイルは、アクションインスタンスの定義と、ビジネスロジック設定情報を記入します。
④業務ロジッククラス(ここでは、loginBLogicImpl.javaとします)
ソースの抜粋:
@Override
public TourUVO executeLogin(LoginInput param) {
TsUVO output = queryDAO
.executeForObject("login.selectUserInfo", param,
TsUVO.class);
return output;
}
上記、LoginInput paramオブジェクトばnullになっている場合、blogin-login-io.xmlで正しく設定されているかを確認してください。
<!-- ログインリクエスト(/loginBL) -->
<action path="/loginBL">
<blogic-params bean-name="net.zanmai.terasoluna.login.dto.LoginInput">
<set-property property="userName" source="form" />
<set-property property="userPass" source="form" />
</blogic-params>
<blogic-result>
<set-property property="userCd" dest="session" />
</blogic-result>
</action>
以上はTerasolunaの処理の説明です。
まとめ:
①ログイン画面(login.jsp)からログインリクエストをして、
⇒②validation-login.xmlによってバリデーションチェックを行い、
⇒③BlogicActionを実行して、moduleLoginContext.xmlに定義した業務ロジッククラスを呼び出し、
⇒④ビジネスロジックBLogicクラスで、blogic-login-io.xmlに定義したパラメータを取り出し、DB処理などを行って、処理結果を業務出力クラスにセットし、blogic-login-io.xmlに定義した情報によって、アクションフォームBeanに設定します。
⇒⑤結果情報をJSPにセットし、HTMLソースに変換し、クライアントに返答します。
⇒⑥ログイン成功ページを表示します。
以上、TerasolunaフレムワークでHello Woldのような簡単なログインサンプルです。
これからおよそ3年間、Terasolunaに関わる作業は多いので、またTerasolunaに関するブログをどんどん記載しますので、【お気に入り】にしてください。
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…