Struts2中action获取前端参数

方法一:属性驱动获得参数
将参数作为Action的类成员变量(属性),让OGNL自动填充;
public class test{
private String username;
public String getUsername () { return bookName; } public void setUsername (String username) { this .username = username; }
public String execute (){
System.out.println( "username: " + this .username);
}
}
execute()方法中的username就是从前端获取的;
注意:
1.Servlet中不能够定义一个类成员变量来获取前端传来的值,因为servlet是线程不安全的:servlet只会创建一次,即一个servlet对象,所以成员变量只有一个,多个请求访问一个servlet时,访问的是同一个成员变量;所以servlet采用在doPost()或doGet()方法中定义局部变量接收前端的值,因为即便只有一个对象,但是方法每次被调用时都会在方法区中重新生成一个;成员变量是类加载时被放置在栈中,局部变量是方法被调用时被放置在方法区中;
2.Action是每次请求都会创建一个新的实例;
3.属性驱动获取参数: 在Action中声明属性,并提供getter和setter方法,从前台传过来的参数就会自动set到属性中。缺点:如果实体属性很多,需要声明多个get(),set()方法,并且程序员需要手动将属性封装到对象里面。
方法二:对象驱动获取参数
将User对象作为Action类的成员变量,并设置getter和setter方法,和属性驱动方式差不多,注意前端传递参数时需要使用对象.属性名;
eg:
前端:
后端:
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
方法三:模型驱动获取参数
又叫ModelDriven模式;这种模式和使用第二种方式的目的一样,都是将属性封装到对象中;
这种模式会使用咱们定义好的JavaBean来封装这些请求参数,大大减少了JSP和Action的代码。
使用时一共分三步:
* 声明User对象并实例化* Action实现ModelDriven接口* 实现getModel()方法,返回Bean对象
前端传递参数时不需要使用对象.属性的方式;
eg:
public class UserAction implements ModelDriven<User>{
private User user = new User();
@Override
public User getModel() {
return user;
}
}
缺点:只能返回一个对象;
方法四:封装集合类型参数
1.List
后端:private List<String> list;
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
前端:
2.Map
后端:private Map<String, String> map;
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
前端:
表示:把<input/>标签的值提交到haha键上;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值