标签:
1、什么是会话?
好比一次通话。打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话。
2、解决的问题是什么?
共享多次请求中产生的数据。比如购物车。
0、HTTP协议的消息头
请求消息头:Cookie 客户端向服务器端传递信息
响应消息头:Set-Cookie 服务器端向客户端传递信息
1、Cookie详解:
l 属性:
name:Cookie的名称,必要的属性
value:Cookie的取值(不能为中文),必要的属性
-------------------以下为可选属性
path:Cookie的路径
默认值就是写cookie的那个资源的访问路径
比如:http://localhost:8080/day09_00_cookie/servlet/CookieDemo1 path就是/day09_00_cookie/servlet/
注意:
如果一个存在浏览器缓存中的cookie的路径是/day09/servlet/
当访问http://localhost:8080/day09/CookiePathDemo1时,浏览器根本不带Cookie给服务器。浏览器比对的是cookie的路径和当前访问的资源的路径。
浏览器满足一下条件就会带cookie给服务器:
当前访问的地址的路径.startWith(已存cookie的路径)。
即:如果一个Cookie的路径设置为了当前应用,说明访问该网站的任何资源时浏览器都带该cookie给服务器。(开发中经常做的)
maxAge:Cookie的最大生存时间。默认是在浏览器的内存中。
domain:Cookie的域名(网站)。默认就是写cookie的那个资源所属的网站。
http://localhost:8080/day09_00_cookie/servlet/CookieDemo1域名就是localhost
version:版本号
comment:注释
u 把Cookie写给客户端:
HttpServletResponse.addCookie(Cookie c):实际上就是向客户端发送了一个响应消息头。
注意:客户端只能保存一个网站最多20个Cookie数据,总共最多300个。每个Cookie的大小不能超过4kb。
l 服务器端获取客户端带来的Cookie:
Cookie [] HttpServletRequest.getCookies();
注意:domain+path+name唯一确定一个Cookie。
2、3个案例
a、显示用户最近的访问时间
b、记住登录的用户名
1、HttpSession是一个域对象及HttpSession的原理
void setAttribute(String name,Object value);
Object getAttribute(String name);
void removeAttribute(String name);
String getId()
HttpSession request.getSession();
HttpSession request.getSession(boolean b):
b如果为true,和getSession()完全一样的
b为false,服务器只是查找,找不到不会创建新的,返回null。
HttpSession.invalidate();使HttpSession对象立即失效。
2、3个案例
a、使用Session完成简单的购物功能
b、完成用户的登录
c、防止表单的重复提交
3、客户端禁用Cookie后的会话数据的保持
客户端永远不会向服务器端带任何cookie。
解决办法:
方式一:(乌龙)文字提示:请不要禁用您的Cookie
方式二:在访问的地址后面加上JSESSIONID=session的id。
http://localhost:8080/servlet/ServletDemo1 URL重写,必须对网站的所有地址都重写
http://localhost:8080/servlet/ServletDemo1;JSESSIONID=123
response.encodeUrl(String url);自动重写。
4、HttpSession对象的状态
JavaWeb 后端 <四> 之 Cookie HttpSession 学习笔记
标签:
原文地址:http://www.cnblogs.com/FLFL/p/5218060.html