第一种方式:属性驱动
提供对应属性的set方法进行数据的封装。
表单的哪些属性需要封装数据,那么在对应的Action类中提供该属性的set方法即可。
表单中的数据提交,最终找到Action类中的setXxx的方法,最后赋值给全局变量。
注意:
a:Struts2的框架采用的拦截器完成数据的封装。
b:这种方式不是特别好:因为属性特别多,提供特别多的set方法,而且还需要手动将数据存入到对象中.
c:这种情况下,Action类就相当于一个JavaBean,就没有体现出MVC的思想,Action类又封装数据,又接收请求处理,耦合性较高。

在页面上,使用OGNL表达式进行数据封装。
在页面中使用OGNL表达式进行数据的封装,就可以直接把属性封装到某一个JavaBean的对象中。
在页面中定义一个JavaBean,并且提供set方法:例如:private User user;
页面中的编写发生了变化,需要使用OGNL的方式,表单中的写法:<input type="text" name="user.username">

注意:只提供一个set方法还不够,必须还需要提供user属性的get和set方法!!!
先调用get方法,判断一下是否有user对象的实例对象,如果没有,调用set方法把拦截器创建的对象注入进来,

第二种方式:模型驱动
使用模型驱动的方式,也可以把表单中的数据直接封装到一个JavaBean的对象中,并且表单的写法和之前的写法没有区别!
编写的页面不需要任何变化,正常编写name属性的值
模型驱动的编写步骤:
手动实例化JavaBean,即:private User user = new User();
必须实现ModelDriven<T>接口,实现getModel()的方法,在getModel()方法中返回user即可!!

最新文章

  1. 记一次与a标签相遇的小事
  2. LZW压缩算法——简明原理与实现
  3. cocos2d-x test学习[1]
  4. HTML5第二节
  5. Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行
  6. hdu 1029 Ignatius ans the Princess IV
  7. 高并发访问mysql时的问题(一):库存超减
  8. UVa 107 - The Cat in the Hat (找规律,注意精度)
  9. .project sturcture和Project Structure 无论是按快捷键或者是从files中打开都不显示
  10. AC自动机算法详解
  11. JSONArray遍历
  12. 洛谷P2733 家的范围 Home on the Range
  13. EXT 数据按F12,F11 显示问题
  14. .NET--接口设计
  15. 【CentOS如何最小化安装】
  16. 真机调试iwatch
  17. 在STEP7 TIA PORTAL中,设置模块的地址和设备名(Device name)
  18. HttpServletRequest获取URL、URI
  19. XPosed 示例
  20. bind()方法

热门文章

  1. 6-11数据库mysql初始
  2. Idea快捷操作
  3. Linq中的left join
  4. Tip:HttpServletRequest
  5. VMware 11安装Mac和Linux
  6. 2013传智播客视频--.ppt,.pptx,.doc,.docx.目录
  7. 2016 alictf Timer writeup
  8. Zookeeper客户端Curator基本API
  9. 记录几个GIT命令
  10. 记录linux 命令