Struts2框架開發流程

jopen 10年前發布 | 36K 次閱讀 Struts2 Web框架

Struts2 本身是一個MVC框架

框架是一個結構化的軟件,盡量將特定領域的日常任務和具體問題的處理流程抽象化,然后提供一個平臺,基于這個平臺可以更快地構建web應用程序。

  1. 自動化常見任務
  2. 提供了架構解決方法
    Struts2是一個面向動作的框架,其核心的關鍵抽象是動作。

    Struts2是實現MVC設計模式的第二代web應用程序框架,由Apache組織推出。

    </span>

    MVC設計模式的3個關注點:模型、視圖和控制器。在struts2中,它們分別通過action,result,FilterDispatcher實現。如下圖所示:

    20140302195326218.jpg


    控制器:FilterDispatcher
    控制器在最前端,是請求處理過程中第一個被觸發的組件。
    控制器的工作是將請求映射到動作。

    FilterDispatcher是一個Servlet過濾器,它檢查每一個傳入請求,決定哪個動作來處理這個請求。你只需要告訴框架哪個請求URL需要映射到哪個動作即可。

    可以通過基于XML的配置文件或Java注解來完成這個任務。


    模型:Action
    模型:是事物本身。
    模型是應用程序的內部狀態,這個狀態由數據模型和業務邏輯共同組成。

    ex. 登錄功能
    業務邏輯提供了身份驗證的方法,這個方法接收用戶名、密碼,
    并根據來源于數據庫的持久化數據驗證它們。

    Action的作用:
  3. 一個動作將業務邏輯調用封裝到一個單獨的工作單元中
  4. 動作是一個數據傳輸的場所


    視圖:Result
    </span>

    結果向瀏覽器返回頁面。


    開發流程小結:

    0. 將struts2(這里用的是最新版2.3.16)需要的相關jar包build到項目的path后,編輯/WEB-INF/web.xml文件如下

    它是web應用程序的中心配置文件,部署描述符,它包含了web應用程序中所有的Servlet、過濾器和其他組件的定義

        <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> </pre></div> </div>

      </div>

      1.構建入口文件struts.xml,該文件用于定義包、動作、以及相應的結果,是全局核心文件

          <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE struts PUBLIC

       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
       "http://struts.apache.org/dtds/struts-2.0.dtd">  
      
      

      <struts>

       <constant name="struts.devMode" value="true" />  
      
       <package name="public" extends="struts-default">  
      
           <action name="Name">  
               <result>/NameCollector.jsp</result>  
           </action>  
      
           <action name="Show" class="cn.myseu.action.HelloWorld">  
               <result name="SUCCESS">/show.jsp</result>  
           </action>       
      
       </package>  
      
      

      </struts> </pre></div> </div>

        </div> package標簽定義了包。

        action標簽定義了動作,并定義動作名,動作的實現類

        result標簽則指定了動作的結果


        2.建立結果頁面(視圖頁面)

        NameCollector.jsp

            <%@ page contentType="text/html; charset=UTF-8"%>
        <%@ taglib prefix="s" uri="/struts-tags"%>
        <html>
        <head>
        <title>HelloWorld</title>
        </head>
        <body>

         <hr>  
         <h3>A Hello Test</h3>  
         <h4>Input your name:</h4>  
         <s:form action="Show">  
             <s:textfield name="name" label="Your name" />  
             <s:submit />  
         </s:form>  
        

        </body>

        </html> </pre></div> </div>

          </div>

          這里表單元素通過action屬性指定了在strtus.xml文件中定義的動作名。

          表單提交后數據將會被放到ValueStack中。


          show.jsp

              <%@ page contentType="text/html; charset=UTF-8"%>
          <%@ taglib prefix="s" uri="/struts-tags"%>
          <html>
          <head>
          <title>HelloWorld</title>
          </head>
          <body>

           <hr>  
           <h3>A Test</h3>  
           <h4>  
               <s:property value="customGreeting" />  
           </h4>  
           <hr>  
          

          </body>

          </html> </pre></div> </div> </div> 這里需要說明的是s:property標簽從ValueStack中取數據,另一方面javabean也從ValueStack中取相應的數據。

          3.編寫動作的實現類

          cn.myseu.action.HelloWorld

              package cn.myseu.action;

          public class HelloWorld {

           public String execute(){  
          
               setCustomGreeting("Hello, "+getName());  
               return "SUCCESS";  
           }  
          
           private String name;  
           private String customGreeting;  
           public String getName() {  
               return name;  
           }  
           public void setName(String name) {  
               this.name = name;  
           }  
           public String getCustomGreeting() {  
               return customGreeting;  
           }  
           public void setCustomGreeting(String customGreeting) {  
               this.customGreeting = customGreeting;  
           }  
        }  </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959551973976218212" target="_blank"></a></div>
        

        </div> </div> 這里使用JavaBean屬性來保存應用程序域數據。
        execute()方法中的業務邏輯可以訪問、操作這些數據。

        來自:http://blog.csdn.net/tao_sun/article/details/20301241

         本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
         轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
         本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!