Struts2中的动态方法调用
Struts2中的动态方法调用
开源俱乐部 发表于4年前
Struts2中的动态方法调用
  • 发表于 4年前
  • 阅读 35
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

一、动态方法调用介绍

        在Struts2开发中,默认执行的是execute方法,有时候我们会在一个Action中写多个方法,这时候我们需要在请求中调用我们想调用的方法,而不是采用多写Action的方式。

        使用动态方法可以避免Action太多。

二、动态方法调用常见方法

本示例中的Action类代码如下所示:

package blog.wlb.net.oschina.my;

public class SimpleAction {
	public String test1(){
		System.out.println("执行测试方法1");
		return "test1";
	}
	
	public String test2(){
		System.out.println("执行测试方法2");
		return "test2";
	}
	
	public String test3(){
		System.out.println("执行测试方法3");
		return "test3";
	}
	
	public String test4(){
		System.out.println("执行测试方法4");
		return "test4";
	}
}

本示例中的struts.xml中的代码如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="default" extends="struts-default">
        <action name="simple" class="blog.wlb.net.oschina.my.SimpleAction">
            <result name="test1">/test1.jsp</result>
            <result name="test2">/test2.jsp</result>
            <result name="test3">/test3.jsp</result>
        </action>
    </package>
</struts>

(1)指定method方法

        Get地址请求形如:http://localhost:8080/web/simple.action?method:test1

        Post请求代码如下所示:

<form action="web/simple.action" method="post">
    <input type="hidden" name="method:test1" />
    <input type="submit" value="提交" />
</form>

(2)叹号方式调用

        形如:http://localhost:8080/web/simple!test1.action

        注意:这种方式官方不推荐。

(3)通配符方式

        修改struts.xml中代码

<action name="simple_*" class="blog.wlb.net.oschina.my.SimpleAction" method="{1}">
            <result name="test1">/test1.jsp</result>
            <result name="test2">/test2.jsp</result>
            <result name="test3">/test3.jsp</result>
</action>

        具体访问为

        http://localhost:8080/web/simple_test1

        http://localhost:8080/web/simple_test2

        http://localhost:8080/web/simple_test3

        http://localhost:8080/web/simple_test4

        这种的意思是所有请求的为simple_开头的action都会根据下划线后面的参数动态的匹配action中的方法。

        这种方式是官方推荐的方式。

三、知识扩展

(1)如何启用或禁用动态方法调用

        动态方法调用默认是启用的,如果想禁用,可以在struts.xml中设置如下代码:

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


共有 人打赏支持
粉丝 10
博文 39
码字总数 31422
×
开源俱乐部
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: