会话跟踪技术
什么是会话?
可简单理解为:打开浏览器——》访问一些服务器内容-》关闭浏览器,整个过程称之为一个会话。
会话过程中要解决的问题?
Http是一种"无状态"协议,每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
例如:
1.用户登录场景,当不同的用户登录系统后,我们如何在主页面显示不同的用户名?
2.购物场景:打开浏览器——》浏览商品列表——》加入购物车(把商品信息保存下来)——》关闭浏览器
会话跟踪技术
会话跟踪技术是一种在客户端与服务器间保持HTTP状态的解决方案,管理浏览器客户端和服务器端之间会话过程中产生的会话数据。
*从开发角度考虑,是使上一次请求所传递的数据能够维持状态到下一次请求,并且辨认出是否相同的的客户端所发送出来的。
会话跟踪技术
主要分为以下几种
1.Cookie技术
2.Session技术
3.URL重写技术
4.隐藏表单域技术
Cookie简介
Cookie技术是一种在客户端保持会话跟踪的解决方案,会话数据保存在客户端浏览器。
Cookie在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器;当用户再次向服务器发送请求时会附带上这些文本信息。
在使用Cookie时,要保证客户端浏览器接受Cookie。
返回值 | 方法 | 描述 |
---|---|---|
Object | clone() | 覆盖标准java.lang.Object.clone方法以返回此cookie的副本。 |
String | getComment() | 返回描述此用途的注释,或者null cookie是否没有注释 |
String | getDomain() | 返回为此cookie设置的域名。 |
int | getMaxAge() | 返回cookie的最大年龄。以秒为单位指定。默认情况下,-1指cookie将持续存在直到浏览器关闭。 |
String | getName() | 返回cookie的名称。 |
String | getPath() | 返回浏览器返回此cookie的服务器上的路径。 |
boolean | getsecure() | 如果浏览器仅通过安全协议发送cookie,返回true,或者浏览器可以使用任何协议发送cookie,返回false |
String | getValue() | 返回cookie的值 |
int | getVersion() | 返回此cookie符合的协议版本 |
void | setComment(java.lang.String purpose) | 指定描述cookie用途的注释 |
void | setDomain(java.lang.String pattern) | 指定应在其中显示此cookie的域 |
void | setMaxAge(int expiry) | 以秒为单位设置cookie的最大年龄 |
void | setPath(java.lang.String uri) | 指定客户端返回cookie的cookie路径。 |
void | setSecure(boolean flag) | 向浏览器指示是否应仅使用安全协议(例如HTTPS或SSL)发送cookie。 |
void | setValue(java.lang.String newValue) | 创建cookie后,为cookie分配新值。 |
void | setVersion(int v) | 设置此cookie符合的cookie协议的版本。 |
构造Cookie对象
Cookie(java.lang.String name,java .lang.String value);
创建cookie对象
Cookie c1=new Cookie("aaa","123456");
c1.setMaxAge(60);//设置有效时间
response.addCookie(c1);//将cookie对象响应给客户端浏览器,存储在客户端
Session简介
Session是指使用HttpSession对象实现会话跟踪的技术,是一种在服务器端保持会话跟踪的解决方案。
HttpSession对象是javax.servlet.http.HttpSession接口的实例,也称为会话对象。
HttpSession对象会在用户第一次访问服务器时由容器创建(注意只有访问JSP,Servlet等程序时才会创建,只访问HTML,IMAGE等静态资源并不会创建),当用户调用其失效方法(invalidate()方法)或超过其最大不活动时间会失效。在此期间,用户与服务器之间的多次请求都属于同一个会话。
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
相同点:都是在server端产生
cookie将自己发送给浏览器,
session将Jsessiionid借助cookjie技术传给浏览器