Struts2接受请求参数三种常用方法

一 接受请求参数主要有三种:属性驱动

对象驱动

模型驱动<model Driven>

方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名称的属性,定义setter和getter方法,struts2框架会自动将请求参数解析出来并为Action属性赋值。访问:/hello.action?name=abc&pass=123

方式2:也可以将所有请求参数封装到javabean中
访问:/hello.action?user.name=abc&user.pass=123

public class HelloAction {
	private User user;
	public void setUser(User user) {…}
	public User getUser() {…}
	public String execute() throws Exception{
		System.out.println("用户名:" + user.getName() + "密码:" + user.getPassword());
		return null;
	}
这个对象不需要new对象,strtus2会帮你去new

方式三。模型驱动 实现分三步走:

1.实现ModelDriven接口

2.实现getModel()方法

3.new 出实体对象进行实列化

public class Demo6Action  extends ActionSupport implements ModelDriven<User>{
	private User user=new User();
	
	@Override
	public String execute() throws Exception {
		
		System.out.println("用户对象的信息:"+user);
		return "success";
	}
	
	
	
	public User getUser() {
		return user;
	}


	public void setUser(User user) {
		this.user = user;
	}


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

}
补充:全局结果:

全局结果 
实现同一个包中多个action共享一个结果

<struts>	
	<default-action-ref name="defaultAction"/ >
	<package name="default" extends="struts-default">
		<global-results>
			<result name="error">/page/error.jsp</result>
			<result name="login" type="redirect">/page/login.jsp</result>
		</global-results>	
			
		…省略action的配置…
	</package>
</struts>
二.编码问题

struts默认配置文件上默认的国际化编码为UTF-8(不建议修改),每次客户端请求后,struts都会用其设定request的默认编码,相当于如下代码。
request.setCharacterEncoding("utf-8")
如果jsp上的charset=utf-8,则用doPost请求传输的数据不会乱码。
用doGet请求传输的数据,需要手动解码:
第一种方式:
//获取ISO8859-1编码

Byte [] bs=this.name.getBytes("ISO8859-1");
//重组装UTF-8

String str = new String(bs,"utf-8");
第二种方式:
修改tomcat(servers文件夹server.xml)  URIEncoding="UTF-8

总结:Action的作用
封装工作单元
转移数据
返回结果逻辑名
struts.xml文件是Struts 2的核心配置文件
Result的结果类型
dispatcher类型(默认)
redirect类型
redirectAction类型
中文乱码处理


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值