fowardするだけ †まずは基本。フォワードするだけ。 <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を定義する †<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にあわせてある
}
}
書き途中! つづき †この記事は 現在のアクセス:25266 |