首先,来看一下Cookie:
http协议特点:无连接性。
在IE浏览器下:
1、 服务器可以向客户端写内容。
2、 写的也只能是文本的内容。
3、 客户端可以阻止服务器写入。
4、 只能拿webapp写入东西。
5、 Cookie分为两种,属于窗口/子窗口(放于内在中)属于文本(有生命周期)。
6、 一个jsp/servlet设置的cookie能够被同一路径下或子路径下的jsp/servlet读到。
(路径=URL)(路径!=真实文件路径)
接下来再看一下Session:
与Cookie是有区别的,Session是把你操作的结果放在服务器端,而Cookie是存在了客户端,(Session默认的情况下还是会依赖于客户端的Cookie)。还有一个区别就是:在Cookie里写在客户端的只能是不超过4K的文本,而Session则任意大小。
HttpSession session=request.getSession(true);//在服务器端与之相对应的ID,如果没有就创建一个。
只要是同一套、有父子关系的窗口,无论是哪个Servlet,都够访问到同一个Session.
如果Cookie被禁掉,解决的方法是:重写URL
response.encodeURL(request.getRequestURL().toString());
总结:
1、 服务器的一块内存。
2、 和客户端窗口对应(子窗口)。
3、 客户端和服务器有对应的SessionID。
4、 客户端向服务器发送SessionID的时候的两种方式:Cookie(内存Cookie)和重写URL。
5、 浏览器禁掉URL,就不能使用Session(使用Cookie实现的Session)。
6、 如果想安全地使用Session(不论客户是否禁掉Cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开Cookie。
*有时候Cookie是禁不掉的。
两者之间的区别:
Cookie | session |
存储在客户端 | 存储在服务器端 |
两种类型 l 有声明周期 l 无声明周期 | 两种实现方式 l 依赖于cookie l url重写 |
父路径不能访问子路径的cookie | 同一个session的窗口共享一个session |
典型应用: l 3个月不用再登陆 l 购物车(http://www.china-pub.com/) | 典型应用: l 用户登陆 l 购物车也可以用session实现。· |
不可靠 | 可靠 |
有意者加群:108732902