struts中动态方法的调用

        

 

        在struts2框架中,调用方法有三种方式,首先是最简单的默认调用Execute()方法【action中method没有指定】,另外就是指定Method方法,在固定的java类中找到匹配的方法进行方法调用,这样子假如有多个方法存在的情况下,会造成action有很多很多个,于是出来了另一种方式——动态方法调用。

 

 

        

        第二种方式:感叹号方式(需要开启),可是貌似官网不推荐使用这种方式,具体原因我也没有查询到,有人知道的话告诉我一下.  

        用这种方式需要先开启一个开关  

        <constant name="struts.enable.DynamicMethodInvocation" value="true" />   

        将此常量设置为true,这种方式才能使用,如下:

<package name="dynamic" extends="struts-default" namespace="/">
		<action name="action2" class="com.hchx.action.ActionDemo2">
			<result>/success.jsp</result>
		</action>
</package>


        页面中如下写:

    <a href="${pageContext.request.contextPath}/action2save.do">保存用户</a>
    <a href="${pageContext.request.contextPath}/action2delete.do">删除用户</a>
    <a href="${pageContext.request.contextPath}/action2update.do">更新用户</a>
    <a href="${pageContext.request.contextPath}/action2find.do">查找用户</a>
 
     
 
 
     <span>第三种方式:通配符方式(官网推荐使用)  </span>
<span></span><span>     首先得关闭开关,在struts.xml中不用配置常量就好,因为在default-properties中这个常量是默认关闭的,如下:</span>
 
<package name="tp" extends="struts-default" namespace="/">
		<action name="*-*" class="com.hchx.action.{1}" method="{2}">
			<result>${targetPage}</result>
		</action>
</package>
注:*代表的就是通配符,“-”是一种分隔符,{}中写阿拉伯数字,数字几代表的就是第几个星号。
 
     页面中这样写:
</pre><p>           </p><pre class="java" name="code">    <a href="${pageContext.request.contextPath}/ActionDemo3-save.do">保存用户</a>
    <a href="${pageContext.request.contextPath}/ActionDemo3-delete.do">删除用户</a>
    <a href="${pageContext.request.contextPath}/ActionDemo3-update.do">更新用户</a>
    <a href="${pageContext.request.contextPath}/ActionDemo3-find.do">查找用户</a>



页面中的action中有分隔符"-",在配置文件中就开始找有-的action,然后开始对应的执行方法,TargetPage是在java类中定义的一个常量,意为目标页面,在执行完不同的方法后,给TargetPage赋值,return都为SUCCESS,这样也能更加方便的执行程序,在方法中定义好目标页面,在struts.xml中获取这个页面值,比较另类的实现了多态的实现,这样狭义的理解吧。。。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值