一、会话技术
1、会话:一次会话中包含多次请求和响应
2、一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方中断为止
3、功能:在一次会话的范围内的多次请求间,共享数据
4、方式:客户端会话技术Cookie、服务器端会话技术Session
二、Cookie
1、概念:客户端会话技术,将数据保存在客户端
2、使用
①创建Cookie对象,绑定数据
new Cookie(String name,String value)
②发送Cookie对象
response.addCookie(Cookie cookie)
③获取Cookie,拿到数据
Cookie[] request.getCookies()
3、实现原理
基于响应头set-cookie和请求头cookie实现
5、关于cookie的一些问题
①一次可不可以发送多个cookie?
答:可以,可以创建多个Cookie对象使用response多次调用addCookie方法,发送cookie即可。
②cookie在浏览器中保存多次时间?
答:默认,浏览器关闭,cookie数据销毁。 也可使用setMaxAge(int secends),正数情况,将Cookie数据写到硬盘文件中,
持久化存储,并制定cookie存活时间,到时间后,自动文件失效;负数情况,默认值;零,删除Cookie信息。
③Cookie可不可以存中文
答:tomcat8之前不可以直接存储中文数据,需要将中文数据转码-一般采用URL编码。之后,便支持中文数据,但特殊字符还是不支
持建议使用URL编码存储,URL编码解析。
④关于cookie共享
假设在一个tomcat服务器中部署多个web项目,那这些web项目中cookie可不可以共享呢?默认,不能共享。当然我们使用setPath
(String path):设置cookie获取范围,默认情况下,设置当前的虚拟目录,(要共享,设置path为'/')。
那么不同tomcat之间如何cookie共享呢?setDomain(String path):如果设置一级域名相同则,则可以实现。例如:tieba.baid
u.com和news.baidu.com,利用setDomain(".bai.com")实现。
6、cookie的特点和作用
特点:
①cookie存储数据在客户端浏览器
②浏览器对于单个cookie的大小限制4kB以及同一个域名下的总cookie数量也有限制20个
作用:
①cookie一般用于存出少量的不太敏感的数据
②再不登录的情况下,完成服务器端对客户端的身份识别
二、Session
1、概念:服务端器会话技术,一次对话的多次请求间共享数据,将数据保存在服务器端的对象中HttpSeesion。
2、使用
①获取HttpSession对象
HttpSession session =request.getSession();
②使用HttpSession对象
Object getAttribute(String name)
void setAttribute(String name,Object Value)
void removeAttribute(String name)
3、原理:实现依赖于Cookie
4、关于Session的一些问题
①当客户端关闭,服务端不关闭,两次获取session是否是同一个?
答:默认下,不是。如果需要相同,则可以创建Cookie键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.getMaxAge(60*60);
response.addCookie(c);
②客户端不关闭,服务端关闭,两次获取的session是同一个?
答:不是同一个,但为了确保数据不丢失,tomcat自动完成以下工作:
session的钝化:
在服务器正常关闭之前,将session对象系列化到硬盘上
session的活化:
在服务器启动后,将session文件转化为内存中的session对象即可
③session什么时候被销毁?
答:a.服务器端关闭
b.session对象调用invalidate()
c.session默认失效时间30min
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5、session的特点:
①session用于存储一次会话的多次请求的数据,存储在服务端
②session相对于cookie来说更安全
三、Cookie和Session不同之处
总结:
①存储数据:session在服务器端,cookie在客户端
②数据大小限制:session无限制,cookie有限制
③安全问题:session更加安全