Struts2配置詳解
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配置詳解