西安百度网站建设,wordpress 上线,网站主体变更,万户网络官网个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得#xff0c;欢迎大家在评论区交流讨论#x1f48c; Cookie是客户端保存用… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得欢迎大家在评论区交流讨论 Cookie是客户端保存用户信息的一种机制Session服务器段保存用户信息的一种机制。Cookie和Session之间主要是通过SessionId关联起来的。 目录 一、获取Cookie方式①方式② 二、获取Session方式①存储Session 方式②方式③ 三、获取Header方式② 一、获取Cookie
方式①
获取Cookie代码如下使用Servlet API的方式
RequestMapping(/getCookie)
public String getCookie(HttpServletRequest request) {Cookie[] cookies request.getCookies();if(cookies ! null) {Arrays.stream(cookies).forEach(cookie - {System.out.println(cookie.getName() : cookie.getValue());});}return 获取cookie成功;
}注意cookies一开始是空的所以要加上if判断演示结果如下 下面来进行Cookie的伪造F12进入开发者工具 方式②
方式①是使用比较原始的方式即Servlet API来获取Cookie 现在我们重启服务器来获取key为aaa的值 代码如下
RequestMapping(/getCookie2)
public String getCookie2(CookieValue String aaa) {return cookie中aaa存储的值是: aaa;
}上面的代码使用了Spring框架的CookieValue注解来获取cookie的值。具体来说CookieValue注解作为方法的参数会自动从请求中获取名为aaa的cookie的值并赋给方法中的变量aaa。然后将该变量拼接到返回的字符串中最终返回结果。
可以发现重启服务器之后仍然可以得到key为aaa中存储的值这是因为Cookie是客户端保存用户信息的一种机制即与浏览器有关与服务器重启无关。
综上Servlet API和Spring框架中的CookieValue注解都可以获取Cookie区别就是Servlet API可以获取请求中的所有cookie而CookieValue注解来直接从请求中获取指定cookie的值将其赋给方法参数。
二、获取Session 方式①
使用Servlet API来获取Session代码如下
RequestMapping(/getSession)
public String getSession(HttpServletRequest request) {// 服务器中每个会话都会创建一个SessionHttpSession session request.getSession(false);// getSession根据Sessionid来获取对应的Session对象默认值为true// 当传入true时如果请求中已经存在一个会话即Session不为空就返回该会话如果没有会话即Session为空则创建一个新的会话并返回。// 当传入false时如果请求中已经存在一个会话就返回该会话如果没有会话则返回 null。if(session ! null) {String name (String)session.getAttribute(name);return 名称: name;}return session为空;
}结果如下 Cookie中虽然有值但是我们可以看到运行结果显示Session是空的因为二者本身是没有关系的但是可以通过Sessionid进行关联。 存储Session
Cookie和Session是通过Sessionid来进行关联的由于Session是服务器端的所以我们无法伪造Session现在我们通过代码来存储SessionSession是服务器端的机制,我们需要先存储,才能再获取
RequestMapping(/setSession)
public String setSession(HttpServletRequest request) {HttpSession session request.getSession();session.setAttribute(name,lisi);return success;
}结果如下 如上图在发起请求时无论是否需要Cookie请求中的信息都会包含Cookie信息。当服务器处理请求后会返回响应给客户端。客户端在接收到响应后会根据响应中包含的Set-Cookie头部字段解析和处理Cookie信息。浏览器会解析Set-Cookie头部字段然后将Cookie保存到浏览器的Cookie存储中。 此时我们再次getSession如下
方式②
代码如下使用了Spring MVC框架的SessionAttribute注解来获取会话session中的属性值。
RequestMapping(/getSession2)
public String getSession2(SessionAttribute String name) {return name name;
}我们重启服务器之后Session就已经清空了因为Session是存储在服务器上的默认是存储在内存中的。所以此时我们是拿不到数据的请看 重启服务器之后运行如下 我们现在重新setSession 然后getSession2 方式③
使用Servlet API提供的HttpSession对象来获取会话session。
代码如下
RequestMapping(/getSession3)
public String getSession3(HttpSession session) {String name (String)session.getAttribute(name);return 名称: name;
}下面是运行结果的演示过程 我们依然是要先setSession因为重启了服务器 然后getSession3 这种方式是直接使用HttpSession对象来获取会话属性值不需要借助注解或其他操作。
三、获取Header
使用Servlet API提供的HttpServletRequest对象来获取请求的Header信息在方法参数中声明HttpServletRequest对象通过Spring MVC会自动注入该对象。。
代码如下
RequestMapping(/getHeader)
public String getHeader(HttpServletRequest request) {String userAgent request.getHeader(User-Agent);return User-Agent userAgent;
}结果如下
方式②
使用Spring MVC提供的RequestHeader注解来获取请求的Header信息。
代码如下
RequestMapping(/getHeader2)
public String getHeader2(RequestHeader(User-Agent) String userAgent) {return User-Agent userAgent;
}结果如下 好了以上就是本文的全部内容了。希望各位友友可以一键三连哈