struts2的簡單介紹以及運用
1 struts2是應用在javaee三層中web層的輕量級框架 2 struts2框架在struts1和webwork基礎之上發展全新框架 3 struts2框架是開源框架 4 struts2框架版本 (2)struts2.3.24 |
常見web層框架
1 struts1 2 webwork 3 springMVC(常用) |
web層框架特
1 只要框架應用在web層,這類框架有共同的特點,有前端控制器(過濾器)
2 畫圖分析struts2解決問題: (1)BaseServlet |
Struts2框架入門案例
(1)在web.xml中進行 過濾器配置 <!-- 過濾器配置 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
Struts2
struts2執行過程
|
(1)有載入順序 Struts2自帶配置檔案 * default.properties : 常量配置 * struts-default.xml : 攔截器 * struts-plugin.xml : 外掛 * struts.xml : 配置action,常量配置 * struts.properties: 常量配置 * web.xml :常量配置 |
Struts2的核心配置檔案
1 struts2核心配置檔名稱和位置固定的 (1)位置src下面 (2)名稱 struts.xml
2 有三個標籤 (1)package標籤 (2)action標籤 (3)result標籤 |
標籤package
1 在struts.xml配置action時候,必須首先package標籤
2 package裡面有屬性name屬性 (1)在struts.xml檔案中寫多個package標籤,但是name屬性值不能相同的
3 package裡面有extends屬性 (1)值固定的值 struts-default,表示攔截器部分
4 package裡面有namespace屬性 (1)namespace屬性值和action標籤name屬性值構成訪問路徑
l /user.action |
標籤action
1 action標籤寫在package標籤裡面
2 在一個package標籤裡面寫多個action標籤,但是name屬性值不能相同
3 action標籤name屬性 (1)namespace屬性值和action標籤name屬性值構成訪問路徑 (2)name屬性值裡面不能新增特殊符號
4 action標籤class屬性 (1)action類全路徑
5 action標籤method屬性 (1)action預設執行名稱是execute的方法,在action可能有其他名稱的方法,讓其他名稱的方法執行,使用method屬性實現 |
標籤result
1 根據action裡面的方法返回值,配置到不同的路徑裡面
2 result標籤裡面name屬性 (1)name屬性值和action方法返回值對應上
3 result標籤裡面type屬性 (1)表示如何到路徑中(轉發或者重定向) (2)type屬性預設值做轉發操作 dispatcher
|
Struts2常量配置
1 struts2是框架,框架特點幫封裝很多功能,struts2常量封裝了框架中一部分功能
2 因為預設常量是原始碼檔案,不能直接修改,使用配置方式修改常量值 (1)在struts2裡面常量修改有三種方式 第一種(常用):在struts.xml進行配置 第二種:在src下面建立名稱struts.properties檔案,進行配置 第三種:在web.xml中進行配置 l struts2裡面這個常量封裝這個功能: l 提交表單之後到action裡面,在action獲取post提交中文資料,亂碼不需要自己解決
l 配置通過瀏覽器輸入副檔名稱
* 建議新增.action
(1)如果設定值true之後,修改struts.xml配置檔案不需要重啟動伺服器
|
Action編寫三種方式
第一種方式:建立類,不繼承任何類,不實現任何介面 (pojo類)
第二種方式:建立類,實現介面 Action
* 如果action方法是String返回型別,不想要在action標籤裡面配置result標籤,需要讓方法方法值 NONE(不跳轉)
第三種方式(常用):建立類,繼承 ActionSupport類 (1)ActionSupport類是Action介面實現類
|
訪問action的三種方法
在一個action裡面,預設執行方法是名稱是execute方法,但是action可以寫其他名稱的方法,執行不是execute方法配置 1 有三種方式實現 第一種 在action標籤裡面使用method屬性實現 第二種 使用萬用字元方式實現(重點) 第三種 動態訪問實現(不用) |
1 使用method屬性
1 配置實現 <!-- 使用method屬性讓action裡面的方法執行 --> <package name="demo2" extends="struts-default" namespace="/"> <!-- 1 讓action裡面的add方法執行 method: 執行的方法名稱 --> <action name="bookadd" class="cn.itcast.action.BookAction" method="add"></action> <!-- 讓action裡面的update方法執行 --> <action name="bookupdate" class="cn.itcast.action.BookAction" method="update"></action> </package>
缺陷:action中的每個方法都需要配置action,如果action裡面有很多的方法,配置很多action實現功能 |
2 使用萬用字元實現(重點)
1 使用萬用字元方式配置action裡面的方法 <!-- 使用萬用字元讓action裡面的方法執行 --> <package name="demo3" extends="struts-default" namespace="/"> <!-- (1)在action標籤裡面使用符號 * 星號,理解為匹配任意內容 (2)把action標籤name屬性值寫實際意義,book_* (3)book_add, book_update,使用book_*都可以匹配到 ** 兩個路徑裡面 add和update方法名稱 ** book_add,使用book_*可以匹配到,*相當於變成 add ** book_update,使用book_*可以匹配到,*相當於變成 update (4)method裡面寫*值 *_* :獲取第一個*值 表示式 {1},第二個* 值 {2} --> <action name="book_*" class="cn.itcast.action.BookAction" method="{1}"></action> </package>
2 訪問action的方法還有一種方式是: 動態訪問,實際開發一般不用,作為了解
(1)開啟常量
(2)配置action,不需要method屬性
(3)訪問時候,寫action的name屬性值後面新增感嘆號 ! ,後面新增執行方法名稱 |