美文网首页程序员
struts中action的配置方式

struts中action的配置方式

作者: rainumdo | 来源:发表于2017-07-23 23:03 被阅读0次

我们先简单写一个Action的类,方便对应说明
每种方法我们都实现UserAction中的3个方法

package test;
public class UserAction {
    public String execute(){
        return "success";
    }
    
    public String add(){
        return "add";
    }
    
    public String delete(){
        return "delete";
    }
}
  • method属性区分调用action

这种方法是使用多个action每个action的name都不同来区分,struts.xml:

<struts>
    <package name="test" extends="struts-default">
        <action name="execute" class="test.UserAction">
            <result name="success">/execute.jsp</result>
        </action>
        <action name="add" class="test.UserAction" method="add">
            <result name="add">/add.jsp</result>
        </action>
        <action name="delete" class="test.UserAction" method="delete">
            <result name="delete">/delete.jsp</result>
        </action>
    </package>
</struts>

如果这样写代码就会很多,不够简洁

  • 动态方法调用

这个是使用struts2中的(!)符来动态的调用对应的方法

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="test" namespace="/" extends="struts-default">
        <global-allowed-methods>add</global-allowed-methods>
        <action name="User" class="test.UserAction">
            <result name="success">/execute.jsp</result>
            <result name="add">/add.jsp</result>
            <result name="delete">/delete.jsp</result> 
        </action>
    </package>
</struts>

调用的语法
actionName!methodName或者actionName?method:methodName
另外这一句要加在前面
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
因为这种调用存在安全问题,2.5中是不允许的
<global-allowed-methods>add</global-allowed-methods>
add方法也要添加允许

  • 通配符映射

struts提供了(*)星号通配符来解决大量action映射的问题

<struts>
    <package name="test" extends="struts-default">
        <global-allowed-methods>add</global-allowed-methods>
        <action name="*_*" class="test.{1}Action" method="{2}">
            <result name="{2}">{2}.jsp</result>
        </action>
    </package>  
</struts>

如果我要调用UserAction中的add()方法,我们的action就要写User_add
{1}就代表了User,{2}就代表了add
这样写就是使struts的action配置文件简洁了很多

相关文章

网友评论

    本文标题:struts中action的配置方式

    本文链接:https://www.haomeiwen.com/subject/dfqvkxtx.html