系列文章目录
一、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