Cookie
1.Cookie的作用
HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。所以通过Cookie 技术在请求和响应报文中写入Cookie信息来控制客户端的状态。
2.浏览器与服务器交互---Cookie
浏览器向服务器发起请求,服务器端收到请求后会发送一个响应报文,其中有一个叫做Set-Cookie 的首部字段信息会通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
3.解决Cookie不安全的问题
可以为Cookie内容加密或者在HTTPS,SSL安全的协议中使用Cookie
4.那在一个G浏览器上为什么某客网站不能同时登录两个用户呢?
因为G浏览器的Cookie中有一个字段是某客网站的用户账号,所以当第二个用户登录时,原来的字段值被覆盖,原来的用户被新用户挤下去了,所以某一时刻只能有一个用户登录某客网站
Session
1.Session简介
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器向客户端浏览器发送一 个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session 依据该Cookie来识别是否为同一用户。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。
2.如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?
Java Web提供了另一种解决方案:URL地址重写。
URL地址重写的原理是将该用户Session的id信息重写 到URL地址中。HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中