Action获取参数

一:通过Action属性获取参数

Action类可以通过定义成员变量,并提供相应的setter,getter,和提交参数的名称一致,并不用做数据类型的转换。从界面获取参数,相应提交方式可以用get 和post,如:testAction? name=admin。

具体代码如下:
jsp
	<form action="./User_check.do">
		用户名:<input type="text" name="useName"><br/>
		密码:<input type="password" name="password"><br/>
		<input type="submit" value="提交">
	</form>
struts.xml
	<package name="user" namespace="/" extends="struts-default">
		<!-- 解决struts2.5 通配符调用无效的问题 -->
		<global-allowed-methods>regex:.*</global-allowed-methods>

		<action name="*_*" class="com.lhb.StrutsText.{1}" method="{2}">
			<result name="success">/success.jsp</result>
		</action>

	</package>
java
public class User extends ActionSupport {
	private static Logger log = Logger.getLogger(User.class);
	private String useName;
	private String password;

	public String getUseName() {
		return useName;
	}

	public void setUseName(String useName) {
		this.useName = useName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String check() {
		log.debug("useName :"+useName+"password :"+password);
		return "success";
	}

}
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
控制台

测试获取参数成功

二:使用DomainModel获取参数

上述方法在Action里面会有许多参数和方法,这样会显得Action很混乱。获取参数也可以借助Model 层的模型,在Action只用保存它的一个对象,并设置对象的get和set方法。相应提交方式可以用get 和post。
java action修改为:
	private static Logger log = Logger.getLogger(User.class);
	// 错误的写法,不能自己实例化,struts会自动实例化private Users users = new Users();
private UserBean user;public UserBean getUser() {return user;}public void setUser(UserBean user) {this.user = user;}public String check() {log.debug("useName :" + user.getUseName() + " password :" + user.getPassword());return "success";}

entity:
	private String useName;
	private String password;
	public UserBean(String useName, String password) {
		
		this.useName = useName;
		this.password = password;
	}
	public UserBean() {
		
	}
	public String getUseName() {
		return useName;
	}
	public void setUseName(String useName) {
		this.useName = useName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "UserBean [useName=" + useName + ", password=" + password + "]";
	}
jsp修改为:
	<form action="./User_check.do">
		用户名:<input type="text" name="user.useName"><br/>
		密码:<input type="password" name="user.password"><br/>
		<input type="submit" value="提交">
	</form>

jsp需要注意,name属性的值为对象.属性。

访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
控制台

测试获取参数成功

三:使用ModelDriven获取参数

上述两个事例都能重jsp页面获取数据,不过在struts有一个ModelDriven 接口,只需在创建Action 的时候去实现ModelDriven 接口,在调用接口的getModel()方法,取到了相关model对象。
java action修改为:
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		log.debug("useName :" + user.getUseName() + " password :" + user.getPassword());
		return "success";
	}

jsp修改为:
	<form action="./User_check.do">
		用户名:<input type="text" name="useName"><br/>
		密码:<input type="password" name="password"><br/>
		<input type="submit" value="提交">
	</form>
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
控制台


测试获取参数成功
 


4:request获取参数

上述三种方式均能从JSP获取数据,不过当有特殊需求时,万不得已的情况下,也可以用requst获取参数,不过这样的方式并不推荐,在action中获取requst和response的代码为:
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
其他操作参照Servlet中requst和response的操作,可以获取参数,转发,重定向,设置对象等。












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值