Struts2第一節

什么是Struts2?

Struts2是一個基于MVC設計模式的Web應用框架,它本質上相當于一個servlet,在MVC設計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數據交互。Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合并的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2的變化很小。

什么是MVC?

模型(Model)-視圖(View)-控制器(Controller),通常簡稱MVC,是一種開發web應用程序的軟件設計模式。該軟件設計模式由以下三部分組成:

模型——屬于軟件設計模式的底層基礎,主要負責數據維護。

視圖——這部分是負責向用戶呈現全部或部分數據。

控制器——通過軟件代碼控制模型和視圖之間的交互。

Struts下載

地址:http://struts.apache.org/download.cgi

文件:struts-2.x.x all.zip

Struts2 的mvc通過五個核心部分進行實現

操作(Actions)

攔截器(Interceptors)

值棧(Value Stack)/OGNL

結果(Result)/結果類型

視圖技術


Struts2 高級系統架構下的模型、視圖及控制器


請求生命周期

通過上述圖片的描述,我們可以依照下面幾點解釋在Struts2 中用戶的請求生命周期:

用戶發送一個資源需求的請求到服務器(例如:頁面)。

核心控制器查看請求后確定適當的動作。

使用驗證、文件上傳等配置攔截器功能。

執行選擇的動作來完成請求的操作。

另外,如果需要的話,配置的攔截器可做任何后期處理。

最后,由視圖顯示結果并返回給用戶。

Struts2 Hello World示例

1、創建一個動態Web項目

2、加入 jar 包:Struts2 的lib文件夾C:\struts-2.2.3\lib中拷貝以下文件到項目的WEB-INF\lib文件夾里。你可以直接拖拽以下所有文件到 WEB-INF\lib 文件夾。

commons-fileupload-x.y.z.jar

commons-io-x.y.z.jar

commons-lang-x.y.jar

commons-logging-x.y.z.jar

commons-logging-api-x.y.jar

freemarker-x.y.z.jar

javassist-x.y.z.GA

ognl-x.y.z.jar

struts2-core-x.y.z.jar

xwork-core.x.y.z.jar

3、 在 web.xml 文件中配置 struts2: 復制 struts\apps\struts2-blank1\WEB-INF\web.xml 文件中的過濾器的配置到當前 web 應用的 web.xml 文件中

4、在當前 web 應用的 classpath 下添加 struts2 的配置文件 struts.xml: 復制 struts1\apps\struts2-blank\WEB-INF\classes 下的 struts.xml 文件到當前 web 應用的 src 目錄下.

5、創建Aciton類

當用戶點擊一個URL時,由Action類來響應用戶操作。一個或多個Action類的方法被執行,并返回一個字符串結果。基于結果的值,會呈現一個特定的JSP頁面

Aciton類

這是一個非常簡單的具有“name”屬性的類。對于“name”屬性,我們用標準的getter和setter方法,以及一個返回“success”字符串的執行方法。

Struts2 框架將創建一個“HelloWorldAction”類的對象,并調用execute方法來響應用戶的動作。你把你的業務邏輯放進execute方法里,最后會返回字符串常量。簡單的描述每個URL,你需要實現一個Action類,你也可以用類名直接作為你的動作名,或者如下面內容所示使用 struts.xml 文件映射到其他name上。

6、創建視圖

我們需要一個JSP來呈現最終的信息,當一個預定義動作發生時這個頁面將被Struts2 框架調用,并且這個映像會定義到 struts.xml 文件里。那么讓我們在你的Eclipse項目的WebContent文件夾里創建以下JSP文

視圖


Taglib指令告知Servlet容器這個頁面將使用Struts2 標簽,并且這些標簽會被s放在前面。s:property 標簽顯示Action類“name”屬性的值,這個值是使用HelloWorldAction類的getName()方法返回的。

7、創建主頁

在WebContent文件夾里,我們還需要創建index.jsp文件,這個文件是用作初始的action URL。用戶可以通過點擊它命令Struts2框架去調用HelloWorldAction類的定義方法并呈現HelloWorld.jsp視圖。


主頁

上面視圖文件里定義的helloaction將通過struts.xml文件影射到HelloWorldAction類及其execute方法。當用戶點擊提交按鈕時,將使得Struts2框架運行HelloWorldAction類中的execute方法,并基于該方法的返回值,選擇一個適當的視圖作為響應進行呈現。

8、配置文件

我們需要一個映像把URL、HelloWorldAction類(模型)以及 HelloWorld.jsp(視圖)聯系在一起。映像告知Struts2 框架哪個類將響應用戶的動作(URL),類里的哪個方法將要執行,以及基于方法所返回的字符串結果,會呈現怎樣的視圖。

那么接下來讓我們創建一個名為struts.xml的文件。因為Struts2 要求 strust.xml 文件顯示在classes的文件夾里,所以我們要在WebContent/WEB-INF/classes 的文件夾下創建 struts.xml 文件。Eclipse并沒有默認創建“classes”文件夾,因此你需要自己創建。在project explorer里右鍵點擊WEB-INF文件夾并選擇“New”>“Folder”,你的 struts.xml 文件應該如下:

struts.xml

這里說幾句關于上述的配置文件。這里我們設定常數struts.devMode的值為,因為我們是在開發環境下工作,需要查看一些有用的日志消息。然后,我們定義一個名為helloworld的數據包。當你想要把你的Actions集合在一起時,創建一個數據包是非常有用的。在我們的示例中,我們命名我們的動作為“hello”,與URL/hello.action保持一致,由HelloWorldAction.class進行備份。HelloWorldAction.classexecute方法就是當URL/hello.action被調用時運行。如果execute方法返回的結果為“success”,那么我們帶用戶進入HelloWorld.jsp

下一步是創建一個web.xml文件,這是一個適用于Struts2 任何請求的接入點。在部署描述符(web.xml)中,Struts2 應用程序的接入點將會定義為一個過濾器。因此我們將在web.xml里定義一個 oforg.apache.struts2.dispatcher.FilterDispatcher 類的接入點,而web.xml文件需要在WebContent的WEB-INF文件夾下創建。Eclipse已經創建了一個基礎的web.xml文件,你在創建項目的時候可以使用。那么,讓我們參照以下內容做修改:

web.xml

我們指定了index.jsp作為我們的歡迎文件,那么我們已經配置好了在所有的URL(列如:所有匹配/*模式的URL)上運行Struts2 過濾器。

9、執行程序

1
2
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,740評論 18 399
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產品,是在 struts1和WebWork的...
    inke閱讀 2,269評論 0 50
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,832評論 0 11
  • (一)Struts、Spring、Hibernate、Mybatis框技術 1.Struts2.0有幾種標簽庫 【...
    獨云閱讀 3,267評論 0 62
  • 從現在開始,重新設置人生快樂與痛苦的次序。在充滿問題和痛苦的人生中,推遲滿足感是唯一可行的生活方式。
    高舒曼閱讀 117評論 0 0