【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())
文章目录
- 获取 Cookie
- 传统获取 Cookie
- 简洁获取 Cookie(注解)
- 获取 Session
- Session 存储和获取
- 简洁获取 Session (1)
- 简洁获取 Session (2)
获取 Cookie
传统获取 Cookie
这是没有 Spring 的时候,用 Servlet 来获取(获取所有的 Cookie)
- Spring MVC 是基于 Servlet API 构建的原始 Web 框架,也是在 Servlet 的基础上实现的
@RequestMapping("/getcookie") public String getCookie(HttpServletRequest request, HttpServletResponse response) { //String name = request.getParameter("name"); Cookie cookies[] = request.getCookies(); if (cookies != null) { //将 Cookie 转成了数据流,然后进行循环 Arrays.stream(cookies).forEach(ck -> System.out.println (ck.getName() + ":" + ck.getValue())); } return "获取Cookie成功"; }
- HttpServletRequest 代表 HTTP 的请求,HTTP 请求里面有什么,这个对象里面就有什么
- HttpServletResponse 代表 HTTP 的响应,HTTP 响应里面有什么,这个对象里面就有什么
这两个对象属于 Spring 的内置对象,需要就加上,不用就不用写
Cookie 是一个数组,所以进行循环打印
进入网页后,Cookie 可以直接进行修改(F12)。然后在里面添加信息,name=bite,value=666,随后保存
- Spring MVC 是基于 Servlet API 构建的原始 Web 框架,也是在 Servlet 的基础上实现的
- HttpServletRequest,HttpServletResponse 是 Servlet 提供的两个类,是 Spring MVC 方法的内置对象,需要时直接在方法中添加声明即可
- HttpServletRequest 对象代表客户端的请求,当客户端通过 HTTP 协议访问服务器时,HTTP 请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息
- HttpServletResponse 对象代表服务器的响应。HTTP 响应的信息都在这个对象中,比如向客户端发送的数据,响应头,状态码等。通过这个对象提供的方法,可以获得服务器响应的所以内容
- Spring MVC 在这两个对象的基础上进行封装,给我们提供更加简单的使用方法
简洁获取 Cookie(注解)
Spring MVC 在这两个对象的基础上进行封装,给我们提供更加简单的使用方法
上面获取的话,就是获取的所有的 Cookie,而如果想要获取某个 Cookie,就需要使用 @CookieValue
@RequestMapping("/getcookie2") public String getCookie2(@CookieValue("bite") String bite) { return "从Cookie中获取值, bite:"+bite; }
@CookieValue 里面的值,就是你要获取的 Cookie
获取 Session
Session 存储和获取
传统方式也是用 Servlet 进行实现的
@RequestMapping("/getsession") public String getsession(HttpServletRequest request) { //从 Cookie 中获取到了 SessionId,根据 Session 获取 Session对象 HttpSession session = request.getSession(); String name = (String) session.getAttribute("name"); return "从session中获取name:"+name; }
- 第四行是从 Cookie 中获取到 SessionId,然后根据 SessionId 获取到 Session 对象
- 然后通过 getAttribute 来获取你要拿的值
因为 session 是在服务器中进行存储的,所以就不能像前面 Cookie 一样可以直接“伪造”了。就需要学习如何设置 session
@RequestMapping("/setsession") public String setSession(HttpServletRequest request){ //从 Cookie 中获取到了SessionId,根据 SessionId 获取Session对象 //如果没有获取到,就会创建一个Session对象 HttpSession session = request.getSession(); session.setAttribute("name","zhangsan"); return "设置session成功"; }
- 首先是在 Cookie 中获取 SessionId,然后根据 SessionId 获取 Session 对象。如果没有获取到,就会创建一个 Session 对象
- 创建好 Session 之后,就可以进行设置了
- 使用 setAttribute 进行设置,前面是 name,后面是 value
之后就可以通过 SessionId 获取到 Session 的值了
如果擅自将下面的 SessionId 改了,就获取不到 Session 了
简洁获取 Session (1)
封装一些冗余的过程
@RequestMapping("/getsession2") public String getsession2(HttpSession session){ String name = (String) session.getAttribute("name"); return "从session中获取name"+name; }
- 使用 setAttribute 进行设置,前面是 name,后面是 value
- Spring MVC 是基于 Servlet API 构建的原始 Web 框架,也是在 Servlet 的基础上实现的
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。