天天看點

總結-對各種開源架構的認識小結-struts2

初入java開發行業,還處于菜鳥階段,俗話說好記性不如爛筆頭,目前接觸比較多的就是各種開源架構了,今天總結一下目前接觸到的架構,以及其中的一些原理。

一.struts2定義

直接上百科上的定義:Struts2是一個基于MVC設計模式的Web應用架構,它本質上相當于一servlet,在MVC設計模式中,
    Struts2作為控制器(Controller)來建立模型與視圖的資料互動。(定義成功解釋了struts2是什麼和作用)
           

二.struts2優勢

Struts 2是一個MVC架構,以WebWork設計思想為核心,吸收了Struts 1的部分優點。
    Struts 2擁有更加廣闊的前景,自身功能強大,還對其他架構下開發的程式提供很好的相容性。
           

三.struts2工作原理

這裡借用一張很常見的工作原理圖
           
總結-對各種開源架構的認識小結-struts2

配合圖像再看下面的說明應該會更加清晰:

  1. 用戶端初始化一個指向Servlet容器(例如Tomcat)的請求
  2. 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,

    這個過濾器對于Struts2和其他架構的內建很有幫助,例如:SiteMesh Plugin)

  3. 接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個ActionFilterDispatcher是控制器的核心,就是mvc中c控制層的核心。
  4. 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
  5. ActionProxy通過ConfigurationManager詢問架構的配置檔案,找到需要調用的Action類

    ,這裡,我們一般是從struts.xml配置中讀取。

  6. ActionProxy建立一個ActionInvocation的執行個體。
  7. ActionInvocation執行個體使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。

四.struts2的使用步驟:

1.加載Struts2 類庫

以下為必須加載的8個jar包:

總結-對各種開源架構的認識小結-struts2

2.配置web.xml

<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>
           

3.開發視圖層頁面-index.jsp

<h1>Hello World</h1>
<div>
    <h1>
        <!-- 顯示Struts Action中message屬性内容 -->
        ${message}
    </h1>
</div>
<hr />
<div>
    <form action=“hello">
        請輸入您的姓名:
        <input name="name" type="text" />
        <input type="submit" value="送出" />
    </form>
</div>
           

4.開發控制層Action-HelloAction

public class HelloWorldAction { 
    private String name = ""; // 使用者輸入的姓名
    private String message = ""; // 向使用者顯示的資訊    
    /**
     * 當Struts 2處理使用者請求時,在預設配置下調用的方法
     */
    public String execute() {
        // 根據使用者輸入的姓名,進行“Hello,XXXX!”的封裝
        this.setMessage("Hello,"+this.getName()+"!");
        // 處理完畢,傳回“ok”字元串
        return “ok";
    }
    …   //省略setter、getter方法
}
           

5.建立struts.xml檔案

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="demo" namespace="" extends="struts-default">
    <action name="hello" method="excute" class="action.HelloAction">
        <result name="ok">/index.jsp</result>
    </action>
</package>
</struts>
           

6.部署、運作項目