Struts2的通配符配置方式
Struts2的Action類很有意思,你可以使用3種方式來實現具體的Action類:
以上三種Action的實現方式都可以被struts2框架自動識別,如果你在struts.xml里面配置了一個action塊但是沒有配置action類的路徑,這樣框架默認使用ActionSupport來處理請求。
但是在實際使用struts2的過程中我發現了一個問題,一個Action只有一個execute方法來處理一類請求,如果我開發的某塊功能有100個不同的請求那我豈不是要寫100個Action類,每個類實現一個execute方法,這樣雖然滿足了一個類一個責任的設計原則,但是會不會造成“類爆炸”?后來看了struts2的文檔才知道,其實我們可以使用struts2靈活的通配符配置來達到減少action類的目的:
先來看看一個簡單的時序圖
請求從這個頁面發起,只是簡單的兩個鏈接
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="infoadd">ADD INFO</a><br> <a href="infodel">DEL INFO</a><br> </body> </html>請求的控制轉發是在struts.xml里面配置的
<struts><constant name="struts.enable.DynamicMethodInvocation" value="true" /><package name="mypack" extends="struts-default"><action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}"><result>/{1}info.jsp</result><allowed-methods>add,del</allowed-methods></action></package> </struts>注:add,del是?方法名,也是jsp名稱前綴,必須創建addinfor.jsp和delinfo.jsp文件,
@Component
@Scope(value="prototype")
public class MyFirstAction extends ActionSupport {
?? ?
?? ? ? private ?Connection conn = null;
?? ? ? ?private ?PreparedStatement pstmt = null;
?? ? ? ?private ?ResultSet ?rs = null;
?? ? ? ?
?? ? ? ?
?? ? ? ?private String username;
?? ? ? ?public String getUsername(){
?? ? ? ? ? ?return username;
?? ? ? ?}
?? ? ? ?public void setUsername(String username){
?? ? ? ? ? ?this.username = username;
?? ? ? ?}
?? ??? ?
? ??
? ? public String addd() {
? ? ?? ?getUsername();
? ? ?? ?int num = queryCount();
?? ??? ?System.out.println("MyFirstActionaddrutsaaaaaaaaaa_______________________________====="+num);
?? ??? ?ActionContext.getContext().getSession().put("list", "威鋒網"+num+username);
? ? ?? ?
? ? ? ? return SUCCESS;
? ? }
? ??
? ? public String del() {
? ? ? ? return SUCCESS;
? ? }
? ??
}
上面這個XML的配置內容有幾點需要注意:
看看這個Action類
public class MyFirstAction extends ActionSupport {public String add() {return SUCCESS;}public String del() {return SUCCESS;} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Struts2的通配符配置方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESXI安装虚拟机
- 下一篇: WebSocket 是什么原理?为什么可