会话管理之Cookie
来源:互联网 发布:centos net snmp 安装 编辑:程序博客网 时间:2024/05/21 08:44
1.会话控制
HTTP协议有两大缺点:
1.无状态
利用cookie和session的技术可以解决无状态的问题
服务器不能区分 不同浏览器 不同用户发送的 不同请求
不能知道多次请求是否发送自一个用户
2.纯文本
利用BeanUtils可以解决纯文本的问题,将文本封装到对象里。
服务器不能通过HTTP请求报文来识别浏览器,但是我们又有这个需求
(Http无状态的连接,不能满足现状的上网需求)
电影院的运作:
1.电影院要创建票
2.将电影票发给顾客
3.顾客带着票去看电影
4.电影院要检票
[1] Cookie
- Cookie就是一个头
服务器以响应头的形式将Cookie发送给浏览器,
response.addCookie(),该方法可以将cookie发送给浏览器
浏览器以请求头的形式将Cookie发回给服务器,request.getCookies(),
该方法可以获得浏览器端的cookies数组。
- Cookie的流程:
1.服务器创建Cookie
2.将Cookie发送给浏览器
3.浏览器带着Cookie来访问服务器
4.服务器检查浏览器的Cookie
- 服务器通过响应报文将Cookie发送给浏览器,具体格式如下:
Set-Cookie: username=sunwukong
浏览器收到该响应头以后,会自动保存Cookie信息,并在以后的访问中携带该Cookie:
Cookie: username=sunwukong; age=18
使用Cookie
- 创建Cookie
Cookie cookie = new Cookie(name,value);
- 发送Cookie
response.addCookie(cookie);
- 读取Cookie
Cookie[] cookies = request.getCookies();//判断cookies是否为nullif(cookies!=null){//遍历Cookiefor(Cookie cookie : cookies){String name = cookie.getName();String value = cookie.getValue();}}
- 修改Cookie
Cookie一旦发送给浏览器,那么服务器将不能直接修改。
但是可以通过使用同名Cookie来替换浏览器已有的Cookie的方式,来间接的修改。
浏览器收到新Cookie以后,就会将老的Cookie销毁,然后使用新的Cookie
- 删除Cookie
删除Cookie指使浏览器不在保存Cookie,使Cookie立即失效
//使name为username的Cookie立即失效
//1.创建一个name为username的Cookie
Cookie cookie = new Cookie(“username”, “aaa”);
//2.设置Cookie的有效时间为0
cookie.setMaxAge(0);
//3.将cookie发送给浏览器,来替换同名Cookie
response.addCookie(cookie);
Cookie的有效时间
Cookie发送个浏览器以后,浏览器是不会永久保存,也就是到了一定的时间以后浏览器会自动销毁Cookie
下次访问服务器时Cookie将不再被携带
Cookie的默认有效时间为一次会话(一次打开关闭浏览器的过程)
同样我们也可以手动指定Cookie的有效时间
cookie.setMaxAge(秒数);
//setMaxAge用来设置Cookie的最大有效时间,需要int型的参数,代表有效的秒数
//当参数大于0时,会设置为指定的秒数
//cookie.setMaxAge(30);
//当参数等于0时,浏览器不会保存Cookie
//cookie.setMaxAge(0);
//当参数小于0时,和不设置是一样,当前会话有效
cookie.setMaxAge(-100);
//设置一个永久有效的Cookie
cookie.setMaxAge(60*60*24*365*10);
Cookie的Path
path指路径,指浏览器在访问哪些地址时该Cookie有效
也就是说Cookie默认的path是servlet项目的根目录
//同样我们也可以手动指定Cookie的路径
//Cookie路径由浏览器解析,所以需要加上项目名
//11_WEB_Cookie/hello 指名凡是访问项目根目录下hello路径下Cookie都有效
cookie.setPath(“/11_WEB_Cookie/hello”);
Cookie的应用:
1.保持用户的登录状态
将用户的信息保存到Cookie中,并发送给浏览器,并且有效时间设置一个较长的时间。
浏览器在以后访问访问网站时,都会带着Cookie,服务器不在需要用户直接输入用户名和密码等信息
而是从Cookie中读取。
Cookie是纯文本的格式,很容易被截获,所以我们在使用Cookie保存敏感信息时一般都需要进行加密。
2.baidu广告的精确推送
我们在使用百度搜索时,他会将我们搜索关键字之类的信息保存到Cookie中,当我们访问带有百度广告的链接时,该Cookie信息会自动发送给Baidu,百度就可以根据Cookie的信息给你推送广告。
3.Taobao目前保存用户名,也就是再次登录时不再需要输入用户名,只需要输入密码。
- 模拟一下taobao的功能:
1.一旦用户登录成功以后,下次在登录时,直接将用户名显示出来,用户不需要再次输入用户名,只输入密码即可。
用户先在login.jsp输入用户名和密码,将请求提交给LoginServlet
LoginServlet检查用户名和密码是否正确,
如果正确:则将用户名保存到一个有效期7天的Cookie中,并发送给浏览器
然后重定向到login-success.jsp
登录失败:暂时不考虑,默认登录成功
- 下次浏览器在访问网站时,直接将Cookie中的用户名读取并在表单中回显<!-- EL中有一个cookie隐含对象,它里边保存的是一个Map<String key , Cookie value>key实际上就是cookie的name属性value就是Cookie本身 -->
Cookie本身也是一个键值对的形式< String name,String value>
获取指定name的cookie的value值。
${cookie.user.value},其中user是cookie的name。
- 会话管理之Cookie
- 会话管理之cookie
- 会话管理之Cookie技术
- 会话管理之Cookie技术应用
- 会话管理之Cookie技术+Session技术
- 会话 (cookie)管理
- 会话管理 Cookie
- Cookie会话管理
- Cookie会话管理
- 会话管理COOKIE
- JavaWeb---会话管理---Cookie
- ---会话管理(cookie)
- Cookie会话管理基础
- Cookie会话管理
- 会话管理 Cookie&session
- Cookie会话管理
- 会话管理之Cookie--->张国亮--->总结心得第一节
- JavaWeb-09(HttpServletRequest对象&会话管理之Cookie)
- UVA10050Hartals
- 字符串编辑距离(相似度)
- faster rcnn源码解读(六)之minibatch
- 素数距离
- jvm垃圾收集器配置-2
- 会话管理之Cookie
- SpringMVC+AJAX处理浏览器无法通过put delete方式请求问题
- Matrix Calculus
- java入门第一季_1.6_数组
- tcp之select多路复用
- xml文档声明
- UVA11609Teams
- POJ2187:Beauty Contest
- 【NOIP2008提高组T3】传纸条-双线程动态规划