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机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
随机推荐
- Spring Ioc源码分析系列--@Autowired注解的实现原理
Spring Ioc源码分析系列--@Autowired注解的实现原理 前言 前面系列文章分析了一把Spring Ioc的源码,是不是云里雾里,感觉并没有跟实际开发搭上半毛钱关系?看了一遍下来,对我的 ...
- CabloyJS全栈开发之旅(1):NodeJS后端编译打包全攻略
背景 毋庸置疑,NodeJS全栈开发包括NodeJS在前端的应用,也包括NodeJS在后端的应用.CabloyJS前端采用Vue+Framework7,采用Webpack进行打包.CabloyJS后端 ...
- PyTorch DataSet Normalization torchvision.transforms.Normalize()
特征缩放, 在这种情况下,我们不仅仅考虑是一个值的数据集,我们考虑的是具有多个特征和相关的值的样本或元素的数据集. 假如正在处理一个人的数据集, 归一化数据集有许多不同的 ...
- AtCoder ABC 250 总结
AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都 ...
- ElasticSearch6.4.2
做一个简单的API记录 1.依赖为6.4.2 比较老的版本 2.指定ES集群,可接多个Put(); Setting setting=Setting.builder().put("clust ...
- React技巧之字符串插值
原文链接:https://bobbyhadz.com/blog/react-string-interpolation 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中,使 ...
- 【RPA之家转载RPA创新产业峰会回看】机器人流程自动化专利态势报告
[RPA之家转载RPA创新产业峰会回看]机器人流程自动化专利态势报告 自动化的一个专利情况的监测,就是全球监测的情况.今天我可能给大家汇报的主要是三个方面,第一个方面就是讲一下全球投资智能化的专利的一 ...
- Vue的基础语法
前言 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是, Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手, ...
- Java中JSON字符串和对象的互转
对象转换成json字符串: JSONObject.toJSONString(switchmes) JSON字符串转换成对象: Switchmes switchmes=(Switchmes) JSONO ...
- Java开发问题:Column 'AAA' in where clause is ambiguous解决办法
当在java开发中遇到了Column 'AAA' in where clause is ambiguous问题时, 你需要去看看:多表查询的时候不同的表是否出现了相同名称相同的列, 如果存在,你需要在 ...