-在struts核心配置文件详解(action)中已经详细讲解了method的用法,使用这个方式可以指定Action类中的不同的方法映射请求,那么就完成了动态调用
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
将这个常量设置true
才能使用action名!方法名
public class SimpleAction implements Action {
@Override
public String execute(){
return SUCCESS;
}
//实现登录的action
public String login(){
System.out.println("这个是login方法......");
return INPUT;
}
}
struts.xml
中的配置(在src目录下)
<struts>
<!-- 开启开关,否则不能使用!的方式 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="test" extends="struts-default" namespace="/">
<!-- 定义这个包下的默认处理类 -->
<default-class-ref class="com.jsnu.struts2.controller.SimpleAction"></default-class-ref>
<!-- 这个是SimpleAction的类 -->
<action name="simple">
<result name="success">/jsp/success.jsp</result>
<result name="input">/jsp/input.jsp</result>
</action>
</package>
</struts>
http://localhost:8080/web1/simple!login
,注意这个感叹号一定是英文的<constant name="struts.enable.DynamicMethodInvocation" value="false" />
method
方式,只不过通过通配符传参而已<struts>
<!-- 设置为false,关闭开关,默认是关闭的,因此可以不设置 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="test" extends="struts-default" namespace="/">
<!-- 定义action,其中name属性使用一个*的通配符,method={1},这个1就是用来接收第一个通配符*的内容
假设此时输入的Simple_regist ,那么此时{1}=regist
-->
<action name="simple_*" class="com.jsnu.struts2.controller.SimpleAction" method="{1}">
<result name="success">/jsp/success.jsp</result>
<result name="input">/jsp/input.jsp</result>
</action>
</package>
</struts>
http://localhost:8080/Struts2/simple_login.action
,那么就会调用SimpleAction中的login方法执行原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。