调用Action中的自定义方法(4种方式)

Action中的execute()方法是默认方法,在执行时被自动调用。但也允许在Action中自定义方法。可以在Action中自定义多个方法,分别处理不同的逻辑。当Action 中使用了自定义方法,该Action 就需要特定的配置,一般有四种调用方式:
(1)使用struts.xml 文件中的method属性;
(2)使用动态方法调用方式(DMI);
(3)使用提交按钮的method属性;
(4)使用通配符配置Action;

介绍这四种方式之前,先给出一个Action类,下面的介绍均用该类进行说明。

package cn.edu.zjut.action;
import com.opensymphony.xwork2.ActionSupport;
import cn.edu.zjut.service.UserService;
import cn.edu.zjut.bean.UserBean;

public class UserAction extends ActionSupport{	
	private UserBean loginUser;
    ......//省略getters和setters方法
	public String login() {
UserService userServ = new UserService();
		if (userServ.login(loginUser)) {
			return "loginSuccess";
		}
		else {
			return "loginFail";
		}
	}
	public String register() {
		UserService userServ = new UserService();
		if (userServ.register(loginUser)) {
			return "registerSuccess";
		}
		return "registerFail";
	}
}

一、使用struts.xml文件中的method属性

在struts.xml文件中配置多个Action,一个方法对应一个Action,将每个Action标签的method属性值改为要调用的方法名。

<action name="login" class="cn.edu.zjut.action.UserAction" method="login">
  <result name="loginSuccess">/loginSuccess.jsp</result>
  <result name="loginFail">/login.jsp</result>
</action>
<action name="register" class="cn.edu.zjut.action.UserAction" method="register">
  <result name="registerSuccess">/regSuccess.jsp</result>
  <result name="registerFail">/regFail.jsp</result>
</action>

二、使用动态方法调用方式(DMI)

在struts.xml文件中只配置一个Action,不指定method属性值,要调用的方法名在访问url中给出。
1)在struts.xml中开启DMI:
加入语句:

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

2)Struts.xml中的Action配置:

<package name="strutsBean" extends="struts-default" namespace="/">
<action name="user" class="cn.edu.zjut.action.UserAction">
<result name="loginSuccess">/loginSuccess.jsp</result>
    <result name="loginFail">/loginFail.jsp</result>
    <result name="registerSuccess">/regSuccess.jsp</result>
    <result name="registerFail">/regFail.jsp</result>
</action>
</package>

3)访问url(2种方式):
①在浏览器中输入:
http://localhost:8080/struts-prj/user!login?loginUser.account=admin&loginUser.password=admin
(其中user为Action名,!后面的login是要调用的方法名,?后面是请求参数,分别表示用户名和密码。)

②修改表单的的action属性值:
登录页面form表单改为`

<s:form action="user!login" method="post">`

注册页面form表单改为`

<s:form action="user!register" method="post">·`

(user为Action名,!后面的login和register是要调用的方法名。)

三、使用提交按钮的method属性

将提交按钮的method属性设置为要调用的方法名。Struts.xml中只需配置一个Action。
登录页面的提交按钮为:

<s:submit value="登录" method="login"/>

注册页面的提交按钮为:

<s:submit value="注册" method="register" />

四、使用通配符配置Action

用*表示任意字符,如user_*表示任何以user开头的字符串,将Action的name值改为“user_*”,表示该Action能匹配任何以“user_”开头的Action请求。同时将method属性设置为“{1}”,表示要调用的方法由第一个*指定。
因此,可以通过在form表单的action属性值中将*替换为不同的方法名,达到访问不同方法的目的。
该方式也只需配置一个Action。

Struts.xml中Action的配置:

<action name="user_*" class="cn.edu.zjut.action.UserAction" method="{1}">

登录页面的form表单:

`<s:form action="user_login" method="post">`

注册页面的form表单:

<s:form action="user_register" method="post">·
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值