1. 程式人生 > >(Struts2)Action的三種訪問方式

(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>