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机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
随机推荐
- jenkins 流水线自动化部署 手动下载安装插件包
如果有些插件不能通过可选插件安装,可以进行选择高级并上传插件包,插件包链接地址为:http://updates.jenkins-ci.org/download/plugins/ 同时在高级中可以更换下 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十一):扩展JustAuth+SpringSecurity+Vue实现多租户系统微信扫码、钉钉扫码等第三方登录
前面我们详细介绍了SSO.OAuth2的定义和实现原理,也举例说明了如何在微服务框架中使用spring-security-oauth2实现单点登录授权服务器和单点登录客户端.目前很多平台都提供了单 ...
- 开发工具-RSA加解密
更新日志 2022年6月10日 初始化链接. https://toolb.cn/rsa
- BPC 脚本
// //税款计算(现金流) // //2018年5月11日修改,去除之前的送数逻辑,新增BADI计算相关科目 // *SELECT(%010804ZH%, "ID", " ...
- Moriis神级遍历!
Moriis 遍历 Morris 遍历是二叉树遍历的一种方式,传统的递归和非递归遍历的时间复杂的都是O(N),空间复杂度都是O(h)(h为树的高度),而 Morris 遍历可以做到时间复杂的依然为 O ...
- rhel7修改网卡名
备份eno16777736网卡配置,并复制出一个ifcfg-eth0 [root@rhel7 network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777 ...
- 想看,但电脑没网怎么办,python教你保存整本成TXT~
各位大佬好鸭!又是我小熊猫啦咱这次直接上代码 开始之前先解释下: 模块: requests >>> pip install requestsparsel >>> p ...
- 全网求解,用Python处理一个基础题目
昨天在群里看见一个Python的问题,趁着今天有那么一点点时间,就想把这个题目分享出来,让大家一起解决.毕竟三个臭皮匠,赛过诸葛亮.原始数据如下: 1 origin_lst = [0, 0, 1, 2 ...
- 程序分析与优化 - 9 附录 XLA的缓冲区指派
本章是系列文章的案例学习,不属于正篇,主要介绍了TensorFlow引入的XLA的优化算法.XLA也有很多局限性,XLA更多的是进行合并,但有时候如果参数特别多的场景下,也需要进行分割.XLA没有数据 ...
- Java面向对象(下)作业
首先我把题目先列到这里,可以仔细看一下题. (1)设计一个名为Geometric的几何图形的抽象类,该类包括: ①两个名为color.filled属性分别表示图形颜色和是否填充. ②一个无参的构造方法 ...