初識Struts(四)----ActionForward
ActionForwardの使用
1、ActionForwardはステアリング情報を含む
2、グローバルforwardとローカルforward
*グローバルforwardは、複数のアクションが処理された後、あるページに移動する場合は、そのページをグローバルforwardに設定します.
*ローカルforward:
* mapping.findForwardメソッドは、まず構成内のローカルforwardを自動的に探し、なければグローバルforwardを探します.
3、転送とリダイレクト
ステアリング:同じrequest
リダイレクト:redirect=「true」を設定し、新しいrequestを作成する必要があるためurlを変更しました
4、転送とリダイレクトはstrutsが提供するActionForwardを使わずに自分で定義できる
アクションでのステアリングのカスタマイズ:
アクションでリダイレクトをカスタマイズするには、次の手順に従います.
5、struts-config.xmlファイルとweb.xmlファイルは実行時に動的に変更できません.つまり、Actionで構成された属性値を変更することはできません.
6、動的ActionForward
Actionコードの変更や構成の追加は不要
たとえば、ページに入力された値に基づいて異なるページに動的にジャンプする必要がある場合は、次のようにします.
動的ActionForwardを使用すると、Actionと構成情報はそれぞれ(注釈部分が動的ActionFormを使用していない場合のコードである):
アクションコード:
構成情報:
1、ActionForwardはステアリング情報を含む
2、グローバルforwardとローカルforward
*グローバルforwardは、複数のアクションが処理された後、あるページに移動する場合は、そのページをグローバルforwardに設定します.
<global-forwards>
<forward name="login" path="/login.jsp" redirect="true"/>
</global-forwards>
*ローカルforward:
<action path="/login"
type="cn.huan.struts.LoginAction"
name="loginForm"
scope="request"
>
<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>
</action>
* mapping.findForwardメソッドは、まず構成内のローカルforwardを自動的に探し、なければグローバルforwardを探します.
3、転送とリダイレクト
ステアリング:同じrequest
リダイレクト:redirect=「true」を設定し、新しいrequestを作成する必要があるためurlを変更しました
4、転送とリダイレクトはstrutsが提供するActionForwardを使わずに自分で定義できる
アクションでのステアリングのカスタマイズ:
RequestDispatcher dispatcher = request.getRequestDispatcher("/mustlogin.jsp");
dispatcher.forward(request, response);
return null;
アクションでリダイレクトをカスタマイズするには、次の手順に従います.
response.sendRedirect(request.getContextPath() + "/login.jsp");
return null;
5、struts-config.xmlファイルとweb.xmlファイルは実行時に動的に変更できません.つまり、Actionで構成された属性値を変更することはできません.
6、動的ActionForward
Actionコードの変更や
たとえば、ページに入力された値に基づいて異なるページに動的にジャンプする必要がある場合は、次のようにします.
<form action="dynaactionforward.do" method="post">
:<input type="text" name="page"><br>
<input type="submit" value=" ">
</form>
動的ActionForwardを使用すると、Actionと構成情報はそれぞれ(注釈部分が動的ActionFormを使用していない場合のコードである):
アクションコード:
package cn.huan.struts;
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;
/**
* ActionForwad
* @author
*
*/
public class DynaActionForwardTestAction extends Action {
/* (non-Javadoc)
* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String page = request.getParameter("page");
// ActionForward af = null;
// if("1".equals(page)){
// af = mapping.findForward("page1");
// }else if("2".equals(page)){
// af = mapping.findForward("page2");
// }
// return af;
// ActionForward
ActionForward af = new ActionForward();
af.setPath("/page" + page + ".jsp");
return af;
}
}
構成情報:
<action path="/dynaactionforward"
type="cn.huan.struts.DynaActionForwardTestAction">
<!--
<forward name="page1" path="/page1.jsp"/>
<forward name="page2" path="/page2.jsp"/>
-->
</action>