利用Session实现三天免登陆
2024-09-22 11:20:17
什么是Session
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。(百度百科)
Session:服务器端的数据存储技术。
Session要解决什么问题
一个用户的不同请求(重定位到一个Servlet,这个Servlet需要用到上一个Servlet的request对象)的处理需要使用相同的数据怎么办呢?
解决:session技术
Session生命周期
当用户使用浏览器第一次向服务器发送请求的时候,服务器会调用相应的Servlet同时创建一个Session对象用于存储用户的某些信息,浏览器之后再向服务器发送其它请求的时候都会附带一个JSESSIONID(以Cookie形式存在于用户的浏览器),服务器在接收到请求后,调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的 session 对象。当用户超过30mins没有操作,服务器端对应的Session就会自动销毁。
注意:Session处在于服务器端、JSESSIONID(Cookie形式存在)存在于浏览器。所以说Session技术依赖于Cookie技术。
Session用法:
req.getSession()
1.如果请求中不存在JSESSIONID那么req.getSession()就会创建一个Session对象
2.如果请求中不存在JSESSIONID那么req.getSession()就会获取对应的Session对象
hs.setMaxInactiveInterval(arg0)
设置Session对象存在时间,不设置默认30mins自动销毁(使用Session对象后又重新开始30mins计时)
还有一种情况就是Session对象没销毁但JSESSIONID 丢失,一次会话(就是当你关闭浏览器JSESSIONID就会销毁),所以请求中不存在之前的JSESSIONID 便无法访问之前的Session对象。
如何利用Session和Cookie解决免登陆问题
eg:我们都应该都有过这样的体验就是我们在访问某一网站的时候,只要我们第一次登录账号密码,下一次进入直接就是主页而不是登录界面。
注意:我只是模拟一下,真正的免登陆不会讲用户名和密码存在Cookie而是将Uid(唯一表示用户的数据)存在Cookie中,通过Uid找到对应用户将用户名、密码存在Session对象当中。
1.第一次访问登录界面并且用户名和密码匹配就获取用户数据保存到Cookie(用户名、密码)里面并创建Session对象保存信息到服务端。
下次再访问登录界面的网址就先判断Cookie是否为空,不为空跳转到首页。
2.当再一次访问登录页面的时候判断Cookie或者Session的某个属性是否为空,如果为空就不做处理让它登录,否则重定位到首页(登录成功界面)
判断Cookie是否为空
1.为空跳到登录界面
2.不为空浏览人数+1跳到展示界面
登录成功添加数据到Session
首页判断
最新文章
- 使用CSS3各个属性实现小人的动画
- MongoDB学习
- python 改变字符串的编码方式
- Scrum Master 面试题 – 你必须知道的22个Scrum基础知识
- 转移大于2m的pdf文件到另外一个文件夹
- 搭建angularjs API文档站点
- Maya 学习资料
- Linux网络流量监控工具-iftop
- c#面试题及答案
- vim打开文件时显示行号
- 使用POI创建Excel文件下载
- apriori &;&; fpgrowth:频繁模式与关联规则挖掘
- Git命令(Git版本:Linux 2.14.3)
- window xshell 连接本地ubuntu虚拟机
- 3-jsp 内置对象、转发与重定向
- 词向量保存为txt
- java集合框架(1) hashMap 简单使用以及深度分析(转)
- js字符串和控制语句
- mapreduce设置setMapOutputKeyClass与setMapOutputValueClass原因
- SAP中方会计凭证打印解决方案
热门文章
- malloc实现机制
- debug assertion failed问题解决
- 迷のbug
- https://www.cnblogs.com/chanshuyi/p/alibaba_review_3_level.html
- The Preliminary Contest for ICPC Asia Nanjing 2019 - D Robots(概率dp+拓扑排序)
- es 分词器介绍
- 解决Vue 使用vue-router切换页面时 页面显示没有在顶部的问题
- JAVA接口测试类
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
- mybatis升级案例之CRUD操作