struts.xml中action标签及action对象的使用

先贴代码

<?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.enable.DynamicMethodInvocation" value="true"/>
	<package name="defaultPackage" extends="struts-default">

		<action name="UserAction" class="com.act.UserAction" >
			<result name="logout">index.jsp</result>
		</action>
		
		<action name="login" class="com.act.UserAction" method="execute">
			<result name="success">personal_page.jsp</result>
		</action>
		
	</package>
</struts>

可以看到,我在package中配置了两组action标签,这两组的用法稍有不同

name属性对应form表单里的action,class则是方法所在的类,method是执行的方法。
result标签的name则是方法的返回值(字符串),中间的是执行之后去到的页面。


第一种是:
“actio名中写了类名及方法的,如UserAction!logout”
如果使用这种提交方法,在action标签里不需要写method,在一个action标签下可以包含多个result标签,用result name区分返回值,以跳转到不同的页面

//对应的form表单
<form action="UserAction!logout" method="post">
	<input type="submit" value="退出登录">
</form>
//UserAction类里的方法
public String execute() throws Exception
{
	System.out.println(user.account);
	System.out.println(user.password);
	session.put("account", user.account);
	return SUCCESS;
	//返回值为success,匹配上了result name="success"的标签
}
//action标签
<action name="UserAction" class="com.act.UserAction" >
	<result name="logout">index.jsp</result>
</action>

第二种是:
“action名没有标明类和方法的,如login”
如果使用这种提交方法,在action标签中要写上method,否则就会使用默认的execute。而且action标签中只能包含一个result标签。

//对应的form表单
<s:form action="login" method="post">
	<s:textfield name="user.account" label="account "></s:textfield><br>
	<s:textfield name="user.password" label="password"></s:textfield>
	<!-- label的文字在框外,value的在框内 -->
	<s:submit value="sign in"></s:submit>
</s:form>
//UserAction类中的方法
public String logout()
{
	session.put("account", "");
	return "logout";			
	//不加返回值的话,貌似就会停留在Action类里,而不是跳转到网页。这里的返回值logout与result标签的name="logout"对应
}
//action标签
<action name="login" class="com.act.UserAction" method="execute">
因为在form表单中没有用!标示方法,所以要写上execute(要调用的方法名)
	<result name="success">personal_page.jsp</result>
</action>

此外,我这两个action标签都是在没有设置namespace的情况下配置的,如果要在不同的名称空间下配置,就要修改form表单和action标签
< form action=“login” namespace="/xxx" >
< action="/xxx/login.action >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值