接收参数的3种方式:使用Action的属性接收、使用DomainModel接收(使用一个对象把属性封装起来)、使用ModelDriven接收(需要实现ModelDriven接口,并对对象属性进行实例化)
struts2接受参数
1、使用Action的属性接受参数
action类直接创建对象实现get/set
2、使用Domain的Model接受参数
//创建model对象 private User user;
//表单name修改 用户名:<input type="text" name="username"> 密码:<input type="password" name="password">
3、使用ModelDriven接受参数
实现ModelDriven<T>接口,指定泛型类型
//需要实例化 private User user=new User(); @Override public User getModel() { return user; }
对于List<String>对象需要
<input type="text" name="listbook[0]">
对于List<User>对象需要
<input type="text" name="listbook[0].username">
struts2接收list参数
Action中定义List属性:bookList
在jsp中使用name:bookList[0]的形式
Struts2接收参数的三种方式
Action属性
Domain Model
ModelDriven
Struts2接受参数
7.接收参数
接收参数的三种方式
action接收参数
有表单如下:
<form action="LoginAction" method> <input type="text" name="username" /> <input type="password" name="password" /> <input type="submit" value="提交" /> </form>
创建LoginAction,添加login()
public String login(){ //******** return SUCCESS; }
1、属性接收
//在LoginAction中建立username、password属性 private String username; private String password; //实现其get、set方法 //login()可以调用username、password
注:属性接收简单,但对于属性多的情况不利于代码维护
2、DomainModel接收
(1)创建user类
public class User{ private String username; private String password; //实现其get、set方法 }
(2)LoginAction中声明User
private User user; //实现User的get、set方法
注:在form表单中,input的name要指定类名如user.username.
3、实现ModelDriven接口
LoginAction实现ModelDriven接口
public class LoginAction extends ActionSupport implements ModelDriven<User>{ //用ModelDriven必须实例化User private User user=new User(); public String login(){ return SUCCESS; } public User getModel(){ return user; }
4、复杂参数接收
(1)user类包含ListBook类
public class User{ private String username; private String password; private List<ListBook> listbook; //实现其get、set方法 }
(2)新建ListBook类
public class ListBook{ private String bookname; private int price; //实现其get、set方法 }
(3)form表单中添加
<input type="text" name="listbook[0].bookname"> <input type="text" name="listbook[0].price"> <input type="text" name="listbook[1].bookname"> <input type="text" name="listbook[1].price">
(4)login()中获取
String book1=user.getListBook().gte(0).getBookName(); String book2=user.getListBook().gte(1).getBookName();
struts2 接收参数 获取的三种方式:
1、通过 字段的get方法 来进行射篮
2、通过 Model 针对某个字段的get方法来实现 参数传递
3、 通过ModelDriven 接收参数。
struts2 接收参数的三种方式:
1、使用Action 的属性接收
2、使用Domain Model 接收
3、使用ModelDriven 接收
@Struts2---接收参数
接收参数
1.使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。
2.使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。
3.使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。
4.request
5.获取List集合中的参数。获取多个参数。
方式一:直接在action类中创建相应的属性和getter和setter,和前端的name名字相同。eg:前端的username,在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值
方式二:使用DomainModel,将username 和password两个属性封装为一个类User(必须是标准的JavaBean),在action中声明这个属性:private User user; 同时为user设置getter和setter;在前端中的name需要设置为user.name和user.password,才能映射成功
方式三:使用ModelDriven<T>接口,这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化,eg: private User user = new User(); 同时不需要getter和setter。前端的name也只需要写username和password就可以,不需要再加域了。这种方法时最推荐的方法,因为可以减少前后端的耦合
接收参数 1,使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。 2,使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。 3,使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。 4,request 5,获取List集合中的参数。获取多个参数。 第一种接收参数的方法:直接在action类中创建相应的属性和getter和setter,和前端的name名字相同。eg:前端的username,在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值 第二种接受参数的方法:使用DomainModel,将username 和password两个属性封装为一个类User(必须是标准的JavaBean),在action中声明这个属性:private User user; 同时为user设置getter和setter;在前端中的name需要设置为user.name和user.password,才能映射成功 第三种接收参数的方法:使用ModelDriven<T>接口,这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化,eg: private User user = new User(); 同时不需要getter和setter。前端的name也只需要写username和password就可以,不需要再加域了。这种方法时最推荐的方法,因为可以减少前后端的耦合
接收参数
Action接收参数 Action中直接设置属性 (对应Action文件中的get和set得到表单提交的数据)
.使用DomainModel接收参数,单独设置模型类,表单中要指出哪个对象,Action中要有对对象的getter,setter,方法,但不用实例化对象
使用ModelDriven接收参数:设置模型类,Action类实现ModelDriven <T>接口,重写getModle()方法,Action中不需要getter,setter,表单中不需要指出哪个对象,但是需要在对应的Action类中实例化对象
(使用泛型的获取参数)
用modeldirven方法,name属性的user.不用
modeldriven方法,
不用getter/setter方法,要实例化对象
getModel方法返回对象
实现ModelDirven接口接收参数,推荐使用
是传到这个user
接收参数3种方法
struts2接收前端数据需要注意:表单中需要传到后端的标签的name值要和后端PO中的属性保持一致,否则会出现nullPonintExecption异常。