java-Servlet-cookie and session
1 状态管理
a) 什么是状态管理?
将浏览器与web服务器之间多次交互当做一个整体处理,并且将多次交互涉及的数据(即状态)保存下来.
b) 如何进行状态管理?
- 可以将状态保存在客户端
将状态保存到浏览器这边,通常使用Cookie技术 - 将状态保存到服务器端(session 会话)
c) Cookie
- 什么是coolie?
服务器为了识别用户身份临时存在浏览器端的少量数据. - 工作原理
浏览器访问服务器时,服务器将一些数据已set-cookie消息头的形式发送给浏览器.浏览器会将这些数据临时保存下来;当浏览器再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器 - 添加cookie
cookie c = new cookie(string name,string value);
注:name:cookie名称 value:cookie值
response.addCookie(c);
d) 读取Cookie
Cookie[] request.getCookies();
注:有可能返回null;
String cookie.getName();
String cookie.getValue();
e) 编码问题
- Cookie只能存放合法的ascii字符.
- 如果要存放中文,可以将中文转换成合法的ascii字符形式.
String URLEncoder.encode(String str,String charset)
String URLdecode,decode(String str,String charset)
注:建议添加cookie时,都统一编码(使用以上对保存的数据进行处理)
f) 生存时间问题
cookie.setMaxAge(int seconds);//设置生存时间
- 单位是秒
- Sencods>0 浏览器通常会将cookie保存在硬盘上,超过指定的时间,cookie失效.
sencods<0 默认值(浏览器会将cookie保存在内存中)
sencods=0 删除cookie.将cookie的时间设置为0就删除了.
g) Cookie的路径问题
- 什么是cookie的路径问题?
浏览器访问服务器上某地址,会比较请求地址是否符合cookie的路径要求,只有符合的cookie才会被发送。 - Cookie的默认路径?
等于添加cookie的web组件的路径:比如:/servlet-day06/biz01/addCookie.jsp添加了一个cookie则cookie的默认路径是/servlet-day06/biz0. - 匹配规则:
要访问的地址必须是cookie的路径或者其子路径. - 设置cookie路径
cookie.setPath(String path);
h) Cookie的限制
- Cookie不安全.(敏感数据要加密处理)
- Cookie可以被用户禁止.
- Cookie只能保存少量数据(大约4k).
- 浏览器端保存的cookie的数量也有限制.(几百个)
- Cookie只能保存字符串.
2 Session(会话)
a) 什么是session?
服务器端为了保存状态而创建的一个特殊的对象.
b) 工作原理
浏览器访问服务器时,服务器创建一个特殊的对象session(该对象有唯一一个id,称之为sessionid)服务器会将sessionid以cookie的形式发送给浏览器;当浏览器在访问时,会将sessionid发送过来,服务器端可以利用这个session找到对应的session对象.
c) 如何获得session对象?
- 方式一
httpSession session = request.getSession(boolean flag);
当flag为true时,先查看请求当中有没有sessionid,如果没有则创建一个session对象,如果有,依据sessionid查找对应的session对象.如果找到则返回,找不到会创建一个新的session对象.
当flag为false时,先查看请求当中有没有sessionid,如果没有则返回null,如果有,依据sessionid查找对应的session对象.如果找到则返回,找不到返回null. - 方式二
httpSession session = request.getSession();
等价于request.getSession(true);
d) 几个方法
- String session.getId();
- setAttrbute(String name,object obj);
- Object getAttrbute(string name);
- removeAttrbute(string name);//解除绑定
e) session超时
- 什么是session超时?
服务器会将空闲时间过长的session对象删除掉.
注:为了节省内存空间的占用.服务器默认的超时限制一般是30分钟. - 怎么修改?
配置文件(web.xml)中修改session config的时间数值. - SetMaxInactiveInterval(int second);//两次请求之前的最大间隔时间.如果超过了时间限制则服务器会销毁session对象.
f) 删除session
invalidate();
java-Servlet-cookie and session的更多相关文章
- Servlet Cookie、Session
HTTP不能保持连接,可使用会话保存用户信息. 常用的会话技术有2种:Cookie.Session. Cookie 1.原理 当用户第一次访问某个网站时,服务器设置Cookie,存储用户信息,放在响应 ...
- Java之Cookie与Session
Cookie.Session Cookie:服务端生成Cookie发给客户端用于认证 Session:服务端进行进行登记,每人有不同的Session session与cookie的区别 Cookie: ...
- 【设计模式】装饰器模式与Java Servlet、Spring Session在其中的使用
简述 装饰器模式,可以通过装饰器类,通过依赖原实现的方式(不使用继承),达到扩展原实现的目的.UML图如下: ServletRequestWrapper于其中的使用 ServletRequestWra ...
- Java学习--Cookie 和session
- [Java] Servlet工作原理之二:Session与Cookie
(未完成) 一.Cookie与Session的使用简介 1 Cookie Cookie 用于记录用户在一段时间内的行为,它有两个版本:Version 0 和 Version 1,分别对应两种响应头 S ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第2章.Cookie与Session
第2章--Cookie与Session Cookie与Session 浏览器输入地址--HTTP请求--Servlet--HTTP响应--浏览器接收 会话(session):打开浏览器,打开一系列页面 ...
- java的会话管理:Cookie和Session
java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...
- Java cookie和session介绍与区别
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
- Java——Cookie与Session
Cookie通过客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 1.Cookie 1.1概念及使用方法 Cookie实际上是一小段文本信息.客户端请求服务器,如果服务 ...
- Java Cookie和Session(转载)
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
随机推荐
- Canvas 线性图形(五):多边形
前言 CanvasRenderingContext2D 没有提供绘制多边形的函数,所以只能由我们自己来实现绘制多边形的函数.以六边形为基础,需要用到三角函数:sin 和 cos. 点 A 坐标 (一) ...
- 阶段性总结 GDOI 2022 PJ
阶段性总结 GDOI 2022 PJ 比赛经过 Day ? ~ Day -1 半停课集训,补了很多东西,但是之前漏得太多了,结果是还有很多题没改 打了若干场 AtCoder ,承认自己思维的不足,训练 ...
- Linux服务器启动jstatd服务
Linux服务器启动jstatd服务 1.查找jdk所在目录 2.在jdk的bin目录下创建文件jstatd.all.policy touch jstatd.all.policy 3.写入安全配置 g ...
- SQL Server默认数据库存放位置
更新记录 2022年6月13日 发布. Windows操作系统 C:\Program Files\Microsoft SQL Server\MSSQLxx_xx.MSSQLSERVER\MSSQL\D ...
- React技巧之打开文件输入框
原文链接:https://bobbyhadz.com/blog/react-open-file-input-on-button-click 作者:Borislav Hadzhiev 正文从这开始~ 总 ...
- vue大型电商项目尚品汇(后台终结篇)day06 重磅!!!
自此整个项目前后台,全部搭建完毕. 今天是最后一天,内容很多,而且也比较常用,一个图标类数据可视化,一个后台的权限管理,都是很经典的类型. 一.数据可视化 1.简介 专门的一门学科,有专门研究这个的岗 ...
- linux系统漏洞lynis扫描
1.下载lynis https://cisofy.com/downloads/lynis/ 或者 yum --enablerepo=epel -y install lynis 2. rz上传压缩包解压 ...
- centos通过日志查入侵
1. Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp 该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统正常运行时间的 ...
- 【Python基础教程】三种常用、效率最高的Python字符串拼接方法
python字符串连接的方法,一般有以下三种: **方法1:**直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39; ...
- GameFramework食用指南
1.框架简介 GF框架分两部分,GameFramework(GF)和UnityGameFramework(UGF): 通过接口的形式对Unity引擎进行了解耦: GF独立于Unity,具体业务逻辑实现 ...