<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                上篇講述了[struts控制器Action和DispatchAction](http://blog.csdn.net/lovesummerforever/article/details/18967831)以及LookupDispatchAction,本篇主要說說struts中的頁面轉發控制,struts提供了ActionForward和ActionMapping兩個類來控制頁面轉發。 ### ActionForward 在使用struts框架開發web應用程序時,Action在完成用戶邏輯處理后,需要把處理結果展示給用戶,這個時候就需要程序控制頁面的轉發,在struts中使用ActionForward對象控制程序轉向。ActonForward對象是一種配置對象,代表了一般的web資源,可以是jsp頁面,servlet以及其他的Action,ActonForward對象映射的是struts配置文件struts-config.xml中的<forward>元素,在這個元素中封裝了目標頁面的URI。ActionForward是struts中的核心類,以下主要參數。 (1)Name屬性:指定ActionForward名稱,在其他類中也可以通過這個名字調用ActionForward。 (2)Path屬性:指明了ActionForward對應的URI。 (3)redirect屬性:屬性設置為true時被設置為重定向,默認false。 在struts中ActionForward有全局轉發ActionForward和局部轉發ActionForward,全局ActionForward應用于全部的Action和局部的轉發僅僅對于當前的Action有效。 例如對用戶登錄的判斷,提交表單后,把用戶登錄信息保存到session中,然后設置<forward>中redirect為true,設置為重定向方式,然后再進行判斷 ~~~ <action path="/must_login"??type="com.bjpowernode.struts.MustLoginAction" ????????????????????????> ??????????????????????<forwardname="login" path="/login.jsp"redirect="true"/> ????????????????</action> ~~~ 這樣當用戶已經登錄的時候會給出提示已經登錄。 如果有十個Action,每個都要驗證是否登錄,每個Action都要進行判斷是否登錄,如果沒有登錄或者超時登錄則轉到Login.jsp上。<forwardname=”login” path=”/login.jsp” redirect=”true”/>如果有100個Action都要重復一百個上一行代碼,因為這個forward只能被自己的這個Action使用,不能被其他的Action使用,所以我們稱為局部的Action。為了避免不必要的重復我們可以使用全局Action,代碼如下所示。 ~~~ ???<global-forwards> ??????????<forwardname="login" path="/login.jsp"redirect="false"/> ???</global-forwards> ~~~ 雖然通過對session的判斷和全局forward的設置,但是用戶可以通過輸入地址來訪問jsp頁面。我們可以把頁面放到WEB-INF下,WEB-INF下的頁面是無法在客戶端訪問到的,我們把頁面放到這個目錄下,避免用戶通過輸入地址訪問到我們不想讓用戶訪問的頁面。 我們也可以自己手動轉到想要轉到的頁面,不需要返回ActionForward對象。 ~~~ //手動轉向。 Response.sendRedirect(request.getContextPath()+”/login.jsp”); //同時設置返回值為null。 Return null; ~~~ ActionForward和動態ActionForward。 我們想要實現當用戶輸入1轉到頁面page1.jsp,輸入2轉到page2.jsp頁面。代碼如下所示。 ~~~ packagecom.bjpowernode.struts; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importorg.apache.struts.action.Action; importorg.apache.struts.action.ActionForm; importorg.apache.struts.action.ActionForward; importorg.apache.struts.action.ActionMapping; /** *動態的ActionForward * @author summer * */ public classDynaActionForwardTestAction extends Action { ???@Override ???public ActionForwardexecute(ActionMapping mapping, ActionForm form, ?????????????????HttpServletRequestrequest, HttpServletResponse response) ?????????????????throwsException { ?????????? ??????????intpage = Integer.parseInt(request.getParameter("page")); ??????????//自己new一個ActonForward。動態ActionForward ??????????ActionForwardaf = new ActionForward(); ??????????af.setPath("/page"+ page+".jsp"); ??????????//設置為重定向方式。 ??????????af.setRedirect(true); ??????????//如果輸入時1則重定向到page1.jsp. ??????????if(page==1) ??????????{ ?????????????????af= mapping.findForward("page1"); ??????????} ??????????//如果輸入時2則重定向到page2.jsp. ??????????if(page==2) ??????????{ ?????????????????af= mapping.findForward("page2"); ??????????} ??????????returnaf; ???} } ~~~ 在這里采用動態ActionForward實現設置為重定向方式,而靜態的ActionForw是不能動態的修改配置文件的。 ### ActionMapping 在struts-config.xml配置文件中,每個<action>元素都對應著一個ActionMapping,當用戶請求被ServletAction接受以后,ActionServlet會根據用戶請求URL以及<action>元素設定的path屬性確定對應的ActionMapping對象,ActionMapping對象會告訴ActionServlet使用哪個Action對象處理用戶請求。 ActionMapping描述了struts中用戶請求路徑和Action的映射關系,在struts中每個ActionMapping都是通過path屬性和一個特定的用戶請求URL關聯。它負責轉發用戶請求給具體的Action,同時還轉發了其他的一些相關信息,這種請求和處理動作之間的映射關系保存在struts-config.xml這個配置文件中,在web服務器初始化的時候,會加載這個配置文件,struts給每個Action都創建一個ActionMapping對象,用來提供給Action使用,當ActionServlet轉發請求的時候,ActionMapping對象會被作為參數傳遞給Action的execute()方法。 struts的學習就總結到此,學習永遠是在學習中,不是一蹴而就的,在后續的學習和項目中加深學習,加深認識。加油!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看