关于springMVC中的session,有2种使用方法,第一种是直接传递httpsession,第二种是使用@SessionAttributes("userId") 注解
这里附带一个帖子,别人写的特别好,是我看过的觉得最好的:http://www.cnblogs.com/waytofall/p/3460533.html
他里面详细的解析了这个注解的作用,httpsession的就不多说了,这里主要解释这个注解的原理
按照原文的解释,也试了原文的例子,确实效果是那样
也就是说这个注解会在把model中对应的的属性名自动保存在session中
而且,下次的请求到别的业务类时,如果这个业务类也标记了这个session注解,他会自动去找session中这个属性名并且填充到model对象中去
可以在地址中的例子的基础上添加一个业务类,尝试着不标记这个注解能不能拿到,和标记了之后在model中就可以拿到了
关于清除的,就只能从httpsession对象的remove的方法去清除了
model以下时个人看法和理解
model的作用跟request的setAttribute(arg0, arg1) 是一样的,都是把值或是对象进行一个保存,然后可以在视图上进行取值,同样都可以使用ognl表达式取值
那问题来了,为什么springmvc框架要使用model这个对象呢?
我个人的理解就是
request他只是一个请求,他的作用就是从客户端发起一个请求,并且携带客户端发起的这个请求所带的参数,在业务层中进行参数的获取并且做出相对应的处理,到这里这个request请求对象的工作就应该结束了,剩下的就是客户端对这个请求和参数做出处理结果并且生成响应response返回客户端。
所以不应该用request进行存值,来达到模型层和视图层的一个连接,所以才使用model或是modelandview这个专门的对象来进行模型层的存在和视图层的取值
model会在模型层进行存值,在视图层中,他会去检查model对象中是否用这个属性,有他就会渲染出来,request请求结束后就会自动清除model的数据
以上是个人对model和request的理解,快1点了,收拾收拾睡觉了