获取 Cookie
传统获取 Cookie
这是没有
Spring
的时候,用
Servlet
来获取(获取所有的 Cookie)
Spring MVC
是基于Servlet API
构建的原始Web
框架,也是在Servlet
的基础上实现的
@RequestMapping("/getcookie")publicStringgetCookie(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
,随后保存
之后刷新,可在服务端看到
Cookie
信息
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")publicStringgetCookie2(@CookieValue("bite")String bite){return"从Cookie中获取值, bite:"+bite;}
@CookieValue
里面的值,就是你要获取的
Cookie
获取 Session
Session 存储和获取
传统方式也是用 Servlet 进行实现的
@RequestMapping("/getsession")publicStringgetsession(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")publicStringsetSession(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
可以通过
Fiddler
进行观察
之后就可以通过
SessionId
获取到
Session
的值了
如果擅自将下面的
SessionId
改了,就获取不到
Session
了
简洁获取 Session (1)
封装一些冗余的过程
@RequestMapping("/getsession2")publicStringgetsession2(HttpSession session){String name =(String) session.getAttribute("name");return"从session中获取name"+name;}
- 这里
HttpSession
就直接省略了自己getSession
的过程,直接就给我们提供了一个Session
简洁获取 Session (2)
更进一步,能直接给到我们想要的 name 的值吗
@RequestMapping("/getsession3")publicStringgetsession3(@SessionAttribute("name")String name){//String name = (String) session.getAttribute("name"); return"从session中获取name:"+name;}
- 这里的
@SessionAttribute
里面的值就是想要获取的Session
的值,省略掉了指定name
的步骤
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=33sw7qvy0ds04
版权归原作者 椰椰椰耶 所有, 如有侵权,请联系我们删除。