<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 功能強大 支持多語言、二開方便! 廣告
                我們都知道SSH是目前比較流行的一個Web應用程序開源框架,而struts又是之中的領頭框架,究竟它有怎樣的力量竟然可以博客IT界的眼球??一起來看!! ###一、演變之處--MVC 要了解struts必須先來了解MVC,MVC并不是Java語言所特有的設計思想,也不是Web程序所特有的思想,它是所有面向對象程序設計語言都要遵守的設計規范。簡單來說,MVC將一個應用程序分為三個部分:Model(模型)、View(視圖)和Controller(控制器)。這三個部分以最小的耦合來協同工作,從而最大限度的提高程序的可擴展性。 那么它們之間如何運行才能達到上述的目標呢?請看下圖: ![](https://box.kancloud.cn/2016-03-10_56e132d94184d.jpg) 而struts2就是MVC的一種表現形式。下面就一起去探索初露羞面的這位姑娘! ### 二、struts的小秘密 #### 1.為什么使用 ?.它是建立在MVC這種公認的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一個好的控制器和一套定制的標簽庫上,也就是說它的著力點在C和V上,因此,它天生就有MVC所帶來的一系列優點,如:結構層次分明,高可重用性,增加了程序的健壯性和可伸縮性,便于開發與設計分工,提供集中統一的權限控制、校驗、國際化、日志等等; ?.其次,它是個開源項目得到了包括它的發明者Craig R.McClanahan在內的一些程序大師和高手持續而細心的呵護,并且經受了實戰的檢驗,使其功能越來越強大,體系也日臻完善; ?.它對其他技術和框架顯示出很好的融合性。 #### 2.struts2應用程序的開發: 1)在web.xml文件中定義核心filter來攔截用戶的請求: 由于Web應用是基于請求/響應架構的應用,所以不管哪個MVC Web框架,都需要在web.xml文件中配置該框架的核心Servlet或者filter,這樣才可以讓該框架介入到Web應用中: ~~~ <!-- 配置Struts2的核心過濾器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ~~~ 2)如果需要以post方式提交用戶的請求,則需要定義包含表單數據的jsp頁面。但是如果僅僅是以get方式來發送請求,則無需進行該步驟; 3)定義處理用戶的Action類:這一步是MVC框架中必不可少的,Action就相當于controller,主要負責調用Model中的方法來處理用戶的請求。 4)配置Action。一直以來我們都有一種思維定勢,使用xml文件對Action進行陪孩子,而這個過程就是指定哪個請求對應哪個Action進行處理,從而讓核心控制器根據該配置來 ? ? ? 創建合適的Action實例,并調用該Action的業務控制方法: ~~~ <action name="login" class="cn.itcast.shop.adminUser.action.LoginAction"> ............. </action> ~~~ 5)配置處理結果和物理視圖資源之間的對應關系: 當Action處理用戶請求結束后,通常會返回一個處理結果可以認為該名稱就是邏輯視圖的名稱,該邏輯視圖需要和制定的物理資源產生關聯,所以我們需要配置處理結果之間的關系: ~~~ <!-- 配置用戶模塊的Action --> <action name="user_*" class="userAction" method="{1}"> <result name="registPage">/WEB-INF/jsp/regist.jsp</result> <result name="input">/WEB-INF/jsp/regist.jsp</result> <result name="loginPage">/WEB-INF/jsp/login.jsp</result> <result name="login">/WEB-INF/jsp/login.jsp</result> <result name="loginSuccess" type="redirectAction">index</result> <result name="quit" type="redirectAction">index</result> <result name="checkcodeFail">/WEB-INF/jsp/regist.jsp</result> </action> ~~~ #### 3.實現的流程: ![](https://box.kancloud.cn/2016-03-10_56e132d958b1d.jpg) 從圖中可以看出,struts2框架的控制下,用戶請求不再需要向jsp頁面發送,而是由核心控制器strutsPreparedAndExecuteFilter 調用 jsp頁面來生成響應,此處的調用并不是直接調用,而是將請求forward到指定的jsp頁面上。 關于struts2的分析就先到這里,SSH其他框架的講解請期待接下來的博客!
                  <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>

                              哎呀哎呀视频在线观看