srtus2获得表单参数的三种方式

srtus2获得表单参数

获得参数的方式有三种,这三种没有什么优劣之分,都有人用。

  1. 方式一:属性驱动。
    表单:写法正常,就是根据name属性来对应
<form action="${pageContext.request.contextPath }/Demo8Action" method="post">
		用户名:<input type="text" name="myname"><br>
		年龄:<input type="text" name="age"><br>
		生日:<input type="text" name="birthday"><br>
		<input type="submit">
	</form>

对应的action

//struts获得参数参数,方式一
//原理:每次请求action时都会创建新的action实例对象
public class Demo8Action extends ActionSupport{
	//准备与参数名字一样的属性,要有get和set方法
	private String myname;
	private Integer age;
	private Date birthday;
	
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getMyname() {
		return myname;
	}
	public void setMyname(String myname) {
		this.myname = myname;
	}

	//获得参数,属性驱动,自动完成类型转换
	//只能转换8大基本类型以及对应的包装类
	//支持特定的字符串转换为Date类型,如:yyyy-MM-dd
	public String execute() throws Exception {
		System.out.println("myname:"+myname);
		System.out.println("age:"+age);
		System.out.println("birthday:"+birthday);
		return "success";
	}
}
  1. 方式:对象驱动。可以将数据封装到对象中。
    先创建一个User,里面有对应的属性:
public class User {
	
	private String myname;
	private Integer age;
	private Date birthday;
	public String getMyname() {
		return myname;
	}
	public void setMyname(String myname) {
		this.myname = myname;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "User [myname=" + myname + ", age=" + age + ", birthday=" + birthday + "]";
	}
	
}

表单写法,注意:name属性要写成像 user.age 这样,user为action中的一个User对象属性,要有get,set方法才称为属性。

<form action="${pageContext.request.contextPath }/Demo9Action" method="post">
		用户名:<input type="text" name="user.myname"><br>
		年龄:<input type="text" name="user.age"><br>
		生日:<input type="text" name="user.birthday"><br>
		<input type="submit">
	</form>

action写法:

//struts获得参数,封装到对象中,方式二
public class Demo9Action extends ActionSupport{
	
	//准备一个User对象   属性,要有get和set
	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	//对象驱动,页面写法 : name="user.myname"
	public String execute() throws Exception {
		
		System.out.println(user);
		return "success";
	}
	
}
  1. 方式:模型驱动。可以将数据封装到对象中。
    先创建一个User类,与上面的一样

表单写法:与正常的一致,同样时通过name属性来对应。

<form action="${pageContext.request.contextPath }/Demo8Action" method="post">
		用户名:<input type="text" name="myname"><br>
		年龄:<input type="text" name="age"><br>
		生日:<input type="text" name="birthday"><br>
		<input type="submit">
	</form>

action写法:这里分三步走,代码中已经标好了。

//struts获得参数,封装到对象中,方式三

																					//1.实现接口,泛型写要封装到的类
public class Demo10Action extends ActionSupport implements ModelDriven<User>{
	
	//3.准备一个User 成员变量,这里要初始化
	private User user = new User();
	
	//模型驱动,页面写法不变
	public String execute() throws Exception {
		
		System.out.println(user);
		return "success";
	}

	//2.实现方法
	public User getModel() {
		// TODO 自动生成的方法存根
		return user;
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值