龙空技术网

Struts2——Action动态方法调用

位嘉小良 99

前言:

现在姐妹们对“struts2 action”可能比较着重,大家都需要分析一些“struts2 action”的相关知识。那么小编同时在网络上汇集了一些关于“struts2 action””的相关知识,希望各位老铁们能喜欢,看官们一起来了解一下吧!

这里就说一下Dynamic Method nvocation ,动态方法调用,什么是动态方法调用呢,就是一个Action里面包含多个方法调用。一般情况下,我们只需要在Action中写一个execute的方法,并返回String 就可以了,或者继承ActionSupport父类,重写这个方法。但是这样在一个Action中只能完成一个请求,为了解决真实开发中,同一个Action能处理类似的业务和资源,我们就可以用到动态方法调用了。

举个例子

查询用户页面Query user.jsp

<h2>提交用户信息</h2>

<form action="${pageContext.request.contextPath}/adduser" method="post">

用户编码:<input type="text" name="uid" /><br/>

用户名:<input type="text" name="uname" /><br/>

<input type="submit" value="提交" />

</form>

<a href="${pageContext.request.contextPath}/user!selUser1">

<h4>查询用户信息1</h4></a>

<a href="${pageContext.request.contextPath}/user!selUser2">

<h4>查询用户信息2</h4></a>

接下来struts.xml的配置

配置跟平成一样,只需要对Action和实现类做映射就可以了,这里特别要注意的是以下这个配置,这个配置主要是打开动态方法调用,如果这里没有打开,则不能使用动态方法调用,访问的结果将会出现404的页面

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

<action name="匹配的返回值名" class="包名/类名" method="方法名>

<result>/获取参数页面</result>

</action>

注意:Action动态方法调用,继承ActionSupport要指定访问方法。

<action name="user" class="com.contro.action.TestAction">

<result name="s1">/message.jsp</result>

<result name="s2">/message.jsp</result>

<!-- 指定允许访问的方法,struts2.3版本之后必须添加此配置 -->

<allowed-methods>selUser1,selUser2</allowed-methods>

</action>

编写Action

跟平成的写的Action没两样,就是在Action里面实现页面调用到的那些方法,这里使用了两个方法selUser1()和selUser2(),所以我们需要在这个类中实现这两个方法。

public class TestAction extends ActionSupport{

private String message;

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public String selUser1(){

message="我是selUser1";

return "s1";

}

public String selUser2(){

message="我是selUser2";

return "s2";

}

}

当然整个流程还需要web.xml过滤器是必备的,某度上就能搜到,这里我就不写了!

我点击了查询用户1

结果

标签: #struts2 action