系列文章目录
文章目录
- 系列文章目录
- 一、Action接收请求参数的第3种方式:通过set模型属性(user.)
- 二、Action接收请求参数的第4种方式:最常用
- 总结
一、Action接收请求参数的第3种方式:通过set模型属性(user.)
先复制一下上一课的项目,跟以前的复制项目的方式一样
 day02_struts2_demo7——>day03_struts2_demo1

 创建一个login.jsp
 然后写一个模型 ,model(包) 然后创建一个类



 然后再在Action这边就写个模型属性就行了




然后我们运行程序

实际上这种方式是比较简单的,也比较实用,唯一麻烦的就是每次都要设置这个user.我们发现getUser打印了2次,但是setUser打印了1次,这是什么原因造成的呢?
 这是由原理决定的:第一次getUser是先看有没有这个对象,有没有值,这里是发现没有,所以自己要new个对象,然后把它设置进去
 (即getUser、setUser)接下来又再次看有没有这个对象,有没有值,这次有了,直接获取即 getUser

 由于要打点(user.)
 所以衍生了第四种方式,最简单也是最常用的一种方式
二、Action接收请求参数的第4种方式:最常用
通过模型驱动在action里实现一个模型驱动接口
 通过这种方式,在.jsp页面就不用写user.了
 实现 模型驱动接口


 我们这里的T 就是User


 步骤:
 1.在action里实现一个模型驱动接口
 2.提供一个模型属性,并一定要赋值

 就这么简单,非常简单,简单到你看不懂,牢牢记住就行,用多了就记得了

 我们打印测试一下看看效果

 一定要注意如果是从第三种方式user.过渡来的会保留第三种方式的.user,一定要在jsp页面把user.去掉
 总而言之就是第四种方式jsp页面不需要.user了,如果有.user反而会有bug,不会有我吗想要的效果


总结
第四种方式: 通过模型驱动【最常用】
 实现步骤:
 1.在action里实现一个模型驱动接口
 2.提供一个模型属性,并一定要赋值
 通过这种方式,在jsp页面中就不用写user.
 这是模型驱动的原理是因为有个模型驱动的拦截器在处理
 这个类就com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor

                





