struts2-通配符和动态方法调用
通配符舉例--BookAction
1 public class BookAction extends ActionSupport { 2 3 public String execute() throws Exception { 4 System.out.println("BookAction ********** execute()"); 5 return null; 6 } 7 /* 8 * 顯示圖書添加頁面 9 */ 10 public String add(){ 11 System.out.println("顯示圖書添加頁面"); 12 return "add"; 13 } 14 }通配符舉例--struts-pattern.xml
1 <struts> 2 <package name="pattern" namespace="/pattern" extends="struts-default"> 3 4 <!-- method:指定執行調用action中的方法,如果不加該屬性,默認調用action中的execute()方法 --> 5 6 <action name="BookAction" class="cn.itcast.pattern.BookAction" method="add"> 7 <result name="add">/pattern/BookAction.jsp</result> 8 </action> 9 </package> 10 </struts>?
通配符舉例—BookAction如何自定義方法
| 在action中增加新的方法的要求: ? 方法最好要用public修飾 ? 方法的名稱自定義 ? 方法沒有參數 ? 方法的返回值為String要定義的方法就是與execute方法的方法名稱不同,其他的都一樣,只有這樣的定義方法struts2才識別 |
?
?
?
?
?
?
通配符映射
動態方法調用-這種方式不常用
?動態方法調用: 通過 url 動態調用 Action 中的方法如果Action中存在多個方法時,我們可以使用!+方法名調用指定方法
?默認情況下, Struts 的動態方法調用處于激活狀態, 若想禁用該功能, 則可以在 struts.xml 文件中添加如下 constant 元素:<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
Jsp頁面的代碼:
1 動態方法調用!形式:<br> 2 <a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">圖書添加</a><br> 3 <a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">圖書刪除</a><br>?
?
Action代碼:
1 import com.opensymphony.xwork2.ActionSupport; 2 3 @SuppressWarnings("serial") 4 public class BookAction extends ActionSupport { 5 public String add(){ 6 System.out.println("BookAction...add()"); 7 return "add"; 8 } 9 public String delete(){ 10 System.out.println("BookAction...delete()"); 11 return "success"; 12 } 13 }Action配置:
1 <action name="BookAction" class="cn.zengfansheng.struts.pattern.BookAction"> 2 <result name="add">/pattern/BookAction.jsp</result> 3 <result name="success">/pattern/success.jsp</result> 4 </action>?
使用通配符定義action-相對于動態方法調用,開發中比較常用這種方式調用action中的方法
jsp頁面代碼:
1 動態方法調用!形式:<br> 2 <a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">圖書添加</a><br> 3 <a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">圖書刪除</a><br>Action配置:
1 <action name="*_*" class="cn.zengfansheng.struts.pattern.{1}" method="{2}"> 2 <result name="add">/pattern/{1}.jsp</result> 3 <result name="success"> 4 <param name="location">/pattern/success.jsp</param> 5 </result> 6 </action>全局結果
當多個action中都使用到了相同result,這時我們應該把result定義為全局結果
1 <package ....> 2 <global-results> 3 <result name="message">/message.jsp</result> 4 </global-results> 5 </package>注:局部的會覆蓋全局-但全局和局部同時存在時,局部的會覆蓋全局的。
全局結果和局部結果的區別:
* 全局結果:對該包下所有的action配置起作用
* 局部結果:只對當前的action起作用
? Struts2中 應用范圍內action的實例,每個請求都會創建一個action實例-也就是對于每一個請求都會new一個Action對象。刷新或者回車
?
轉載于:https://www.cnblogs.com/hacket/archive/2013/05/15/3079050.html
總結
以上是生活随笔為你收集整理的struts2-通配符和动态方法调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Eclipse创建一个Android
- 下一篇: 关于erlang的套接字编程