一、Cookie
cookie相关说明:
1、cookie由服务器端创建,然后添加到HttpServletResponse中发送给客户端(浏览器)。
2、可以添加多个cookie键值对。
3、cookie由键值名和键值组成。“
相同domain和path”中的键值名不能重复,添加键值名重名的键值对会覆盖上一个同名的键值对。
4、添加cookie时要指定cookie所在域(setPath),指定存在时长(setMaxAge)。5、服务端创建好cookie后提交给客户端,之后浏览器的每次请求(HttpServletRequest)里都会携带“cookie数组”。
6、springmvc有两种方式获取:
(1)在控制器中通过注解@CookieValue(键值名),获取指定某个cookie。
(2)通过HttpServletRequest中的getcookies方法获取cookie数组,然后迭代里面的每一个cookie键值对。
二、Session
@SessionAttribute作用于处理器类上,用于在多个请求之间传递参数,类似于会话的属性,但不完全一样,一般来说@SessionAttribute设置的参数只用于暂时的传递,而不是长期的保存,长期保存的数据还是要放到会话中。
通过@SessionAttribute注解设置的参数有3类用法:
(1)在视图中通过request.getAttribute或session.getAttribute获取
(2)在后面请求返回的视图中通过session.getAttribute或者从model中获取
(3)自动将参数设置到后面请求所对应处理器的Model类型参数或者有@ModelAttribute注释的参数里面。
将一个参数设置到SessionAttribute中需要满足两个条件:
(1)在@SessionAttribute注解中设置了参数的名字或者类型
(2)在处理器中将参数设置到了model中。
@SessionAttribute用户后可以调用SessionStatus.setComplete来清除,这个方法只是清除SessionAttribute里的参数,而不会应用Session中的参数。