栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Day 7】学习笔记Springboot仿牛客网论坛实现 -会话管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Day 7】学习笔记Springboot仿牛客网论坛实现 -会话管理

HTTP 的基本性质 : 简单的, 可扩展的, 无状态的有会话的;

无状态: 在同一个链接(同一个浏览器访问同一个服务器) 链接上之后可以发送多次请求,多次请求之间没有任何关系; 请求之间没有联系;这带来一个问题,即用户没有办法在同一个网站中进行连续的交互。

用cookies 解决这个问题: 用cookies 创建有状态的会话 ;cookies 是使用HTTP 的头部扩展,加入头部之后创建一个会话让每次请求都能共享相同的上下文信息。达成相同的状态;

cookies:是服务器发送到用户浏览器饼保存在本地的一小块数据,他会在浏览器下次向同一服务器再次发送请求时被携带并发送到服务器;

cookie 示例:

@

@ RequestMapping (path="/cookie/set",method=RequestMethod.GET)
@ ResposseBody
public String setCookie (HttpServletResponse response){
//创建cookie
Cookie cookie =new Cookie("name"," value");
//设置cookie 生效范围
cookie.setPath("/");
//设置cookie 生存时间
//一分钟60 * 10 
cookie.setMaxAge(60*10)
//发送cookie}
//把cookie放到response 头部
response.addCookie(cookie);
return "set cookie";}

测试
需要依赖浏览器的插件

在转到地址前打开检查。network - 发送请求时可以看到请求过程: set 请求 点击 -

因为是服务器发给浏览器放在response 的头部 所以看response

set-cookie

浏览器访问服务器的时候会接着带这个cookie

@ CookieValue ("code")String code //意思为从cookie 中取key 为code 
public String getCookie (@ CookieValue("code")String code){
code//
return "get cookie";}

缺点: 存在客户端的数据导致它很不安全

对性能产生印象

另外一种方法是: Session

是java EE 用于在服务端记录客户信息 但是会对服务端内存产生压力

浏览器向服务器发送请求-服务器创建session对象- 浏览器和服务器的对应关系通过cookie

每次创建一个唯一标识(sessionid) 通过cookie 传给浏览器

浏览器存储- 下次浏览器发送的时候就是之前的sessionid

服务器就可以找到之前与浏览器对应的session

示例:session 对象可以直接注入

@ RequestMapping (path="/session/set",method=RequestMethod.GET)
@ ResposseBody 
public String setsession (HttpSession session){
session.setAttribute("id",1);
return "set session ";
}
//取值
@ RequestMapping (path="/session/get",method=RequestMethod.GET)
@ ResposseBody 
public String setsession (HttpSession session){
System.out.println(session.getAttribute("id"))
return "get session ";
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/944282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号