日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2的通配符配置方式

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2的通配符配置方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Struts2的Action類很有意思,你可以使用3種方式來實現具體的Action類:

  • 讓你的Action類繼承自ActionSupport類(項目中最常用這種方式,因為ActionSupport類中定義了很多幫助方法)
  • 讓你的Action類實現Action接口
  • 使用POJO的方式來實現,只要Action類中有一個返回值為String的execute方法就好了(這種方式使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的配置內容有幾點需要注意:

  • 我開啟了struts2的RMI,apache struts基于安全性考慮,RMI默認是關閉的。
  • 大家看到action name的值跟平常有點不一樣,我使用了星號通配符用來匹配JSP中的兩個鏈接:infoadd和infodel, 要配置method="{1}", 這樣要被調用的method名字就分別是add和del了。
  • result的JSP頁面的名字也可以用通配符來配置,我分別定義了兩個JSP,addinfo.jsp和delinfo.jsp,這樣正好一一對應。
  • 注意在struts2.5之后,基于安全性考慮struts2默認開啟了SMI,必須顯示定義Action中能被請求調用的方法,所以我有配置<allowed-methods>
  • 看看這個Action類

    public class MyFirstAction extends ActionSupport {public String add() {return SUCCESS;}public String del() {return SUCCESS;} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Struts2的通配符配置方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。