S2Struts導入
本家のクイックスタートが、MayaaやPOJO Actionも絡んだもので、個人的にちんぷんかんぷんだったので、StrutsとS2を知っていればなんとかなる感じの手順を書いてみました。
(1) http://s2struts.seasar.org/ja/index.html より、
S2StrutsBlank-V1.2.9.zip をダウンロード。
展開したフォルダを、Eclipseのワークスペースへインポート。
s2struts-blankをTomcatコンテキストに追加しておく。
(2) S2系の設定を実施する。
・WEB-INF/struts-config.xml を編集。
今回、無設定S2Strutsを利用する。デフォルトでそのように設定
されているが、以下を修正しておく。
<plug-in className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn"> <set-property property="enableJar" value="false"/> </plug-in> ↓ <plug-in className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn"> <set-property property="enableJar" value="false"/> <set-property property="docRoot" value="/WEB-INF/jsp"/> </plug-in>
本プラグインが無設定の設定。今回、jspを/WEB-INF/jspの下におくため、そのように
設定しておく。
・WEB-INF/src/ に、sampleパッケージを作成し、
WEB-INF/src/sample.dicon を作成し、以下とする。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN" "http://www.seasar.org/dtd/components21.dtd"> <components> <include path="aop.dicon" /> <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor" /> <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"> <property name="autoNaming"> <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming" /> </property> <initMethod name="addClassPattern"> <arg>"sample"</arg> <arg>".*ServiceImpl"</arg> </initMethod> </component> <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"> <property name="instanceDef"> @org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST </property> <property name="autoNaming"> <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming" /> </property> <initMethod name="addClassPattern"> <arg>"sample"</arg> <arg>".*Action"</arg> </initMethod> </component> <component class="org.seasar.framework.container.autoregister.AspectAutoRegister"> <property name="interceptor">traceInterceptor</property> <initMethod name="addClassPattern"> <arg>"sample"</arg> <arg>".*Action"</arg> </initMethod> </component> </components>
・WEB-INF/src/app.dicon にincludeを追加。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN" "http://www.seasar.org/dtd/components21.dtd"> <components> <include path="s2struts.dicon"/> <include path="sample/sample.dicon"/> </components>
ここまでで、S2系の設定が終了。あとは対応する命名規約に従って、
各クラスを用意すれば良い。
(3) jsp、各クラスを用意する。
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"/> <title>ログイン画面</title> </head> <body> <center> <html:form action="/auth" focus="userId"> <table> <tr><td>ログイン名</td><td><html:text size="15" property="userId" /></td></tr> <tr><td>パスワード</td><td><html:password size="15" property="password" /></td></tr> <tr><td colspan="2" align="center"><html:submit value="ログイン" /></td></tr> </table> </html:form> </center> </body> </html>
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"/> <title>ログイン結果</title> </head> <body> <center> ログインしました。<br/> <bean:write name="message" /><br/> <html:link page="/login.do">ログインページへ</html:link> </center> </body> </html>
・/WEB-INF/src/sample/AuthForm.java
public class AuthForm extends ActionForm { private static final long serialVersionUID = -7936486757862722375L; private String userId; private String password; public String getPassword() { return password; } public void setPassword( String password ) { this.password = password; } public String getUserId() { return userId; } public void setUserId( String userId ) { this.userId = userId; } }
・/WEB-INF/src/sample/LoginAction.java
public class LoginAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { AuthForm authForm = new AuthForm(); authForm.setUserId( "default" ); authForm.setPassword( "" ); request.setAttribute( "authForm", authForm ); return ( mapping.findForward( "success" ) ); } }
・/WEB-INF/src/sample/AuthAction.java
public class AuthAction extends Action { private static final Log LOG = LogFactory.getLog( AuthAction.class ); public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { AuthForm authForm = (AuthForm)form; LOG.info( "indexForm::userId=" + authForm.getUserId() ); LOG.info( "indexForm::password=" + authForm.getPassword() ); request.setAttribute( "message", "Welcome, " + authForm.getUserId() ); return ( mapping.findForward( "success" ) ); } }
(4) http://localhost:8080/s2struts-blank/login.do に接続して
動作確認。