session和cookie
1.2024年7.4-7.8学习总结/暑假day7-112.2024.6.6学习java&算法3.2024年6.7--6.17学习总结4.2024年7.3学习总结/暑假day65.2024年6.27-7.2学习总结/暑假day1--56.2024年6.23-6.26学习总结7.2024年6.18-6.22学习总结8.2024年7.9-7.19学习总结/暑假day12-229.2024年7.26-7.29学习总结/day29-3210.编程日记 批量导入数据11.编程日记 后端使用redis12.编程日记 更改redis存储默认序列化器13.ide启动多个实例
14.session和cookie
15.java多线程16.bupt_os_lab117.11.12 ali-oss上传图片18.sql 166119.bupt_os_lab220.11.18 学习21.11.21 打工22.IntelliJ IDEA格式化快捷键失效23.leetcode78 子集24.leetcode39 组合总和25.11.30学习日记26.12.6详解前后端对接27.2024.12.9 小bug28.12.23软工踩坑29.leetcode 104530.2024.12.26 os lab331.2024.12.27复习日记32.一文搞定宝塔LINUX部署上线前后端分离项目33.2025.1.2复习34.leetcode 178935.leetcode131 分割回文串36.2025.1.13 redis乱码问题解决37.2025.1.15 学习38.2025.2.17 学习39.2025.2.18 学习40.2025.2.19 学习41.2025.2.24学习42.git clone问题解决43.2025.2.27 学习44.2025.3.4 学习session和cookie
@RequestMapping("/login")
public String userLogin(UserLoginRequest request,HttpServletRequest httpServletRequest){
String username=request.getUsername();
String password=request.getPassword();
List<User> list;
list=userMapper.GetUser(username);
if (list.size()==0) return "找不到用户";
User resultUser=list.get(0);
String TruePassword=list.get(0).getPassword();
if (password.equals(TruePassword)) {
User user=new User();
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
httpServletRequest.getSession().setAttribute(USER_LOGIN_STATE,resultUser);
return "OK";
}
return "用户名或密码错误";
}
@RequestMapping("/get")
public User GetCurrentUser(HttpServletRequest request){
Object user=request.getSession().getAttribute(USER_LOGIN_STATE);
System.out.println(user);
return (User) user;
}
原理:客户端发起一个登录请求给服务端,这里服务端就会给客户端分配一个唯一的session作为JSESSIONID(并且可以在session里存入一些信息,比如用JSON格式存登陆成功的User对象信息),并且在返回响应的时候带上这个JSESSIONID,那么响应回去之后,客户端再发请求时会携带这个JSESSIONID,也就是cookie,那么服务端就可以根据它知道对应的客户端是谁了(并且可以直接读这个cookie对应的Session里的USER_LOGIN_STATE字段,这样可以实现保存用户登录信息的功能)。
request.getSession.setAttribute(USER_LOGIN_STATE,resultUser)就是服务端在session将字段USER_LOGIN_STATE赋值为resultUser。
这里我们看具体的代码:
@RequestMapping("/get")
public User GetCurrentUser(HttpServletRequest request){
Object user=request.getSession().getAttribute(USER_LOGIN_STATE);
System.out.println(user);
return (User) user;
}//服务端收到request之后,调用getSession()方法,获取到该请求的Session,然后调用getAttribute方法取该Session内字段USER_LOGIN_STATE的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构