1. 程式人生 > >Struts2配置詳解

Struts2配置詳解

method software ext.get 不存在 相同 patch ant name屬性 調用

1.Namespace

1)namespace決定action的訪問路徑,默認為“”,可以接受所有路徑的Action;
2)namespace可以寫為/,或者/xxx,或者/xxx/yyy,對應action訪問路徑為/index.action,/xxx/index.action或者/xxx/yyy/index.action
3)namespace最好也用模塊來進行命名

當url中輸入不存在的Action的時候,定向到默認的Action

1.1 struts2配置詳解

1.核心控制器

需要在web.xml中進行配置

對框架進行初始化,以及處理所有的請求

2.Action

開發Action

實現Action接口

繼承ActionSupport類

配置Action

Action的作用

封裝工作單元

數據轉移的場所

返回結果字符串

3.Result

實現對結果的調用

result元素的值指定對應的實際資源位置

name屬性表示result邏輯名

4.struts.xml

01.核心配置文件,主要負責管理Action,通常放在WEB-INF/classes目錄下,在該目錄下的struts.xml文件可以被自動加載

02.constant元素

配置常量,可以改變Struts 2框架的一些行為,name屬性表示常量名稱,value屬性表示常量值

03.package元素

包的作用:簡化維護工作,提高重用性,包可以“繼承”已定義的包,並可以添加自己包的配置

name屬性為必需的且唯一,用於指定包的名稱

extends屬性指定要擴展的包

namespace屬性定義該包中action的命名空間 ,為可選屬性

2.動態方法調用

DMI Dynamic Method Invoke(動態方法調用)

解決問題:

減少了配置文件中Action節點個數,<Result>節點

案例:

DimAction:

1 public class DmiAction extends ActionSupport{
2 public String del(){ 3 return "del"; 4 } 5 public String list(){ 6 System.out.println("del"); 7 return "list"; 8 } 9 }

struts.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     <!--修改struts.xml文件,無需重啟tomcat-->
 8     <constant name="struts.devMode" value="true"></constant>
 9     <!--動態方法調用開啟  默認開啟-->
10     <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
11 
12     <package name="day03" namespace="/" extends="struts-default">
13         <!--訪問規則 http://localhost:8080/dmiAction!del-->
14         <action name="dmiAction" class="cn.happy.day03dmi.DmiAction">
15             <result name="list">/day02/list.jsp</result>
16             <result name="del">/day02/del.jsp</result>
17         </action>
18     </package>
19 </struts>

訪問規則:

技術分享圖片

3.通配符

類似於正則:正則分為:匹配和限定所用

技術分享圖片技術分享圖片

通配符使用案例

PatternAction

1 public class PatternAction extends ActionSupport {
2     public String del(){
3         return "del";
4     }
5     public String list(){
6         return "list";
7     }
8 }

struts.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     <constant name="struts.devMode" value="true"></constant>
 8 
 9     <package name="day04" namespace="/" extends="struts-default">
10         <action name="*_*" class="cn.happy.day04pattern.{1}" method="{2}">
11             <result name="{2}">/day02/{2}.jsp</result>
12         </action>
13     </package>
14 </struts>

訪問規則:

技術分享圖片

4.ResultType

技術分享圖片

chain:轉發到Action

dispatcher:默認值:轉發到jsp頁面

redirect:重定向到頁面

redirectAction:重定向到Action

案例:返回類型為chain

ResultAction 
 1 public class ResultAction {
 2     public String list(){
 3         Map<String,Object> map=(Map<String,Object>)ActionContext.getContext().get("request");
 4         map.put("msg","lalalala~~~~~~~~~~~~~`");
 5         System.out.println("list=================");
 6         return "list";
 7     }
 8     public String add(){
 9         System.out.println("add=====================");
10         return "add";
11     }
12 }

struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     <!--修改struts.xml文件不用重啟tomcat-->
 8     <constant name="struts.devMode" value="true"></constant>
 9 
10     <package name="day05" namespace="/" extends="struts-default">
11         <action name="resultActionList" class="cn.happy.day05result.ResultAction" method="list">
12             <result name="list">/day02/list.jsp</result>
13         </action>
14 
15         <action name="resultActionAdd" class="cn.happy.day05result.ResultAction" method="add">
16             <result name="add" type="chain">
17                 <param name="actionName">resultActionList</param>
18                 <param name="namespace">/</param>
19             </result>
20         </action>
21     </package>
22 </struts>

5.默認Action

技術分享圖片

效果:

技術分享圖片

6.全局結果集

GlobalAction
1 public class GlobalAction extends ActionSupport {
2     public String list(){
3         return "error";
4     }
5 }
GlobalResultTwo 
1 public class GlobalResultTwo extends ActionSupport {
2     public String list(){
3         return "error";
4     }
5 }

struts.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts.devMode" value="true" />
 7     <package name="day06" namespace="/" extends="struts-default">
 8         <!--全局結果集,當多個action有相同的結果的時候,可以提取到這裏,進行復用-->
 9         <global-results>
10             <result name="error">/error.jsp</result>
11         </global-results>
12 
13         <action name="globalAction" class="cn.happy.day06globalresult.GlobalAction" method="list">
14             <result name="list">/day02/list.jsp</result>
15         </action>
16         <action name="globalActionTwo" class="cn.happy.day06globalresult.GlobalResultTwo" method="list">
17             <result name="list">/day02/list.jsp</result>
18         </action>
19     </package>
20 
21 </struts>

效果:

技術分享圖片

Struts2配置詳解