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


下一篇:在Struts2框架中使用Servlet的API

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值