struts 动态方法调用

2017-11-08  本文已影响21人  吐痰高手

动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多

1.指定method属性的方法

直接上代码
这个是java类文件

public class HelloWorldAction extends ActionSupport { 
    @Override
    public String execute() throws Exception{
        System.out.println("执行action");
        return "123";
    }
    public String add(){
        return SUCCESS;
    }
    public String update(){
        return SUCCESS;
    }
}

这个是struts.xml文件

<struts>
    <package name="default" namespace="/" extends="struts-default">
        //没有method属性,就对应execute()方法
        <action name="helloworld" class="com.zyj.struts.HelloWorldAction">
            <result name="123" >/WEB-INF/MyJsp.jsp</result>
        </action>
        
        //name对应浏览器请求的url
        //method对应类中的方法名
        <action name="add" method="add" class="com.zyj.struts.HelloWorldAction">
            <result>/WEB-INF/add.jsp</result>
        </action>
        
        //name对应浏览器请求的url
        //method对应类中的方法名
        <action name="update" method="update" class="com.zyj.struts.HelloWorldAction">
            <result>/WEB-INF/up.jsp</result>
        </action>
    </package> 

</struts>

2.通配符方式

struts.xml文件内容:

<struts>
    //据说struts2.5之后必须要加strict-method-invocation="false" ,之前的版本反正我没用过;
    <package name="default" namespace="/" extends="struts-default" strict-method-invocation="false">
        //name中的*号就是通配符,name中不能有斜杠,星号是有顺序的,序列从1开始
        //要使用*号的内容,就要使用大括号{},大括号内的数字就是第几个*星号的意思
        <action name="*_*" method="{2}" class="com.zyj.struts.{1}Action">
            <result name="123" >/WEB-INF/MyJsp.jsp</result>
            <result >/WEB-INF/{2}.jsp</result>
        </action>
    </package> 
</struts>
上一篇下一篇

猜你喜欢

热点阅读