(Struts2)Action的三種訪問方式
1、傳統訪問:通過<action>標籤中的method屬性,訪問到Action中的具體的方法
* 傳統的配置方式,配置更清晰更好理解!但是擴充套件需要修改配置檔案
* 具體的例項如下:
* 頁面程式碼:
<h3>傳統的配置檔案的方式</h3> <a href="${pageContext.request.contextPath }/saveCust.action">儲存客戶</a> <a href="${pageContext.request.contextPath }/delCust.action">刪除客戶</a>
* Action類的程式碼:
public class CustomerAction extends ActionSupport{
// 儲存客戶
public String save() {
System.out.println("儲存客戶...");
return NONE;
}
// 刪除客戶
public String delete() {
System.out.println("刪除 客戶...");
return NONE;
}
}
* 配置檔案的程式碼(struts.xml)
<!-- 演示Action的訪問,傳統方式 --> <package name="demo2" namespace="/" extends="struts-default"> <action name="saveCust" class="com.itheima.action2.CustomerAction" method="save"></action> <action name="delCust" class="com.itheima.action2.CustomerAction" method="delete"></action> </package>
2、萬用字元的訪問方式(訪問的路徑和方法的名稱必須要又某種聯絡)萬用字元就是 * 代表任意的字元
* 使用萬用字元的方式可以簡化配置檔案的程式碼編寫,而且擴充套件和維護比較容易。
* 具體例項如下:
* 頁面程式碼:
<h3>萬用字元的方式(應用較多)</h3>
<a href="${pageContext.request.contextPath }/linkman_save.action">儲存聯絡人</a>
<a href="${pageContext.request.contextPath }/linkman_delete.action">刪除聯絡人</a>
* Action類的程式碼:
/**
* 萬用字元的方式
*/
public class LinkmanAction extends ActionSupport {
// 儲存聯絡人
public String save() {
System.out.println("儲存聯絡人...");
return "saveOK";
}
// 刪除聯絡人
public String delete() {
System.out.println("刪除聯絡人...");
return "delOK";
}
}
* 配置檔案的程式碼(struts.xml):
<!-- 萬用字元的方式 -->
<package name="demo2" namespace="/" extends="struts-default">
<action name="linkman_*" class="com.itheima.action2.LinkmanAction" method="{1}">
<result name="saveOK">/demo1/suc.jsp</result>
<result name="delOK">/demo1/suc.jsp</result>
</action>
</package>
具體理解:在JSP頁面傳送請求,linkman_save.action,配置檔案中linkman_*可以匹配該請求,*就相當於變成了save,method屬性的值使用{1}來代替,{1}就表示的是第一個*號的位置!!所以method的值就等於save,那麼就找到Action類中的save方法,那麼save方法就執行了。
3、動態方法訪問的方式(有的開發也會使用)
* 如果使用動態方法訪問的方式,需要開啟一個常量,struts.enable.DynamicMethodInvocation = false,把值設定成true
* 注意:不同的Struts2框架的版本,該常量的值不一定是true或者false,需要自己來看。如果是false,需要自己開啟。
* struts.xml中開啟該常量。
<!-- 開啟動態方法訪問 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
* 具體程式碼如下:
* 頁面程式碼:
<h3>動態方法訪問的方式</h3>
<a href="${pageContext.request.contextPath }/user!save.action">儲存使用者</a>
<a href="${pageContext.request.contextPath }/user!delete.action">刪除使用者</a>
* Action類的程式碼:
/**
* 動態方法訪問方式
*/
public class UserAction extends ActionSupport {
// 儲存使用者
public String save() {
System.out.println("儲存使用者...");
return NONE;
}
// 刪除使用者
public String delete() {
System.out.println("刪除使用者...");
return NONE;
}
}
* 配置檔案的程式碼:
<!-- 開啟動態方法訪問 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<!-- 配置動態方法訪問 -->
<package name="demo2" namespace="/" extends="struts-default">
<action name="user" class="com.itheima.action2.UserAction" ></action>
</package>