美文网首页程序员
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