struts2 接受参数的两种方式(属性驱动和模型驱动)
2017-03-03 11:38
411 查看
定义:
在struts2中,页面的数据和action(控制层)传输基本上有两种方式,一个是属性驱动、另一个是模型驱动。属性驱动
基本数据类型的属性对应:就是Web页面上html标签的name属性或者与属性相对应的getter/setter相对应。当页面提交的时候,struts2会自动从request对象里面把数据取出来,然后按照名称进行对应,自动设置到Action的属性里面去。
缺点:如果实体属性太多,相应的getter/setter方法也会很多,Action类会显得十分零乱。
public class LoginAction extends ActionSupport{ private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String login(){ return "login"; } } //前台页面 <body> <form action="${basePath }/login_login"> 用户名: <input type="text" name="userName" /> 用户密码: <input type="text" name="password" /> <input type="submit" value="提交"/> </form> </body>
直接使用域对象(推荐用这种):
为了解决上种方式的问题,struts2提供了直接使用域对象的属性驱动(即把属性和对应的getter/setter方法从Action里面移出去,单独封装成一个域对象,然后在Action类中直接使用这个域对象就可以了。需要改变的是,在相应的name属性上,添加一个域对象的前缀,指明这个值到底对应到哪一个域对象里去。(需要有setter方法)
//前台页面 <body> <form action="${basePath }/login_login"> 用户名: <input type="text" name="user.userName" /> 用户密码: <input type="text" name="user.password" /> <input type="submit" value="提交"/> </form> </body> //Action类里把属性封装成了User实体并实例化了一个对象user public class LoginAction extends ActionSupport{ //域模型驱动 User user = new User(); public String login(){ return "login"; } }
模型驱动
实现方式:让Action实现一个ModelDriven的接口。这个接口需要我们实现一个getModel的方法,这个方法返回的就是Action所使用的数据模型对象。采用ModelDriven的方式一个Action只需要一个Model,因此web界面里的name不需要加上前缀修饰。(需要有setter方法)<form action="${basePath }/login_login"> 用户名: <input type="text" name="userName" /> 用户密码: <input type="text" name="password" /> <input type="submit" value="提交"/> </form> //LoginAction类 public class LoginAction extends ActionSupport implements ModelDriven{ User user = new User();//模型驱动也需要实例化 public String login(){ return "login"; } @Override public Object getModel() { return user; } }
相关文章推荐
- struts2 接受参数的两种方式(属性驱动和模型驱动)
- Action接收参数的3种方式(属性,域模型,模型驱动,struts2.1.8)
- Action接收参数的3种方式(属性,域模型,模型驱动,struts2.1.8)
- strut2接收参数的三种方式(属性驱动\对象驱动\模型驱动)
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
- struts学习(四)—属性封装、模型驱动封装和表达式封装
- checkbox向后台传多个name相同的value时的两种属性驱动接收方式
- Struts-setter、getter方法自动 ActionSupport类-属性驱动+模型驱动
- Struts属性和模型驱动
- struts同时使用属性注入和模型驱动注入数据注入失败原因分析及解决方法
- ###struts模型驱动(必须new)能够封装【对象类型属性的属性】.页面传参错误导致的问题:HTTP Status 500 - could not execute statement;
- struts 的模型驱动,接受表单值
- struts.xml属性配置,action属性,通配符,action接受参数(二)
- Struts中模型驱动与属性驱动共同使用可能会遇到的问题
- Struts的属性驱动和模型驱动
- struts属性驱动与模型驱动
- Struts2-Action接受参数方式、method属性使用及通配符的配置
- struts模型驱动和属性驱动