まずは基本。フォワードするだけ。
<action-mappings> <action path="/index" forward="/WEB-INF/jsp/index.jsp" /> </action-mappings>
と記述しておくことで、
http://hogehoge/[path]/index.do
というURLでindex.jspへアクセス可能となります。直接JSPを指定したくない場合に用いられますね。そもそもWEB-INF内のJSPには直接アクセスできないですし。
<form-beans> <form-bean name="LoginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="userId" type="java.lang.String" /> <form-property name="pass" type="java.lang.String" /> </form-bean> </form-beans> ... <action-mappings> <action path="/login" forward="/WEB-INF/jsp/index2.jsp" name="LoginForm" /> </action-mappings>
と記述しておきます。画面(JSP)では
<html:form action="/login" focus="userId" method="post"> <div id="errmsg"><html:errors /></div> <table border="0" class="center"> <tr> <td width="20%" align="right">ユーザID</td> <td align="left"><html:text property="userId" styleClass="inputStrImeDisabled" size="40" maxlength="20" tabindex="1" /></td> </tr> <tr> <td width="20%" align="right">パスワード</td> <td align="left"><html:password property="pass" styleClass="inputStrImeDisabled" size="42" maxlength="40" tabindex="2" redisplay="false" /></td> </tr> <tr> <td><br /> </td> </tr> <tr> <td width="20%"></td> <td align="left"> <html:submit property="loginButton" value="ログイン" styleClass="fButtons" tabindex="3" /></td> </tr> </table> <html:hidden property="url" /> </html:form>
としておくことで、テキストボックス付きのformになります*1。まだ/login(つまりindex2.jsp)にフォワードするだけですが。
次はいよいよアクションをかませます。
上の定義の
<action path="/login" forward="/WEB-INF/jsp/index2.jsp" name="LoginForm" />
を
<action path="/login" type="nu.mine.kino.actions.LoginAction" name="LoginForm" > <forward name="success" path="/WEB-INF/jsp/index2.jsp" /> </action>
に変更します。すると遷移先がアクションクラスとなり、アクションクラス内で遷移先を制御することになります。たとえばアクションクラスを以下のようにしました。
package nu.mine.kino.actions; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub System.out.println("hogehoge"); return mapping.findForward("success"); <-forward nameのsuccessにあわせてある } }
書き途中!
この記事は
現在のアクセス:24458