Cookie和Session

9/6/2015来源:Java教程人气:3186

Cookie和session

Cookie

将用户相关的信息保存在客户端

客户端每次访问服务器都会自动携带cookie的数据

Cookie cookie = new Cookie(name, value);

response.addCookie(cookie);

什么是会话Cookie

保存在浏览器内中的属于会话cookie

特点:关闭浏览器的时候就会清楚cookie

什么是持久会话cookie

数据保存客户端硬盘上

通过setMaxAge 设置为持久

Cookie的有效路径

cookie.setPath(“/work”);

删除cookie

cookie.setMaxAge(0);

cookie.setPath(“/work”);

response.addCookie(cookie);

//request.getRequestDispatcher(“/PRo.jsp”).forward();//转发

response.sendRedirect(“/work/pro.jsp”);//重定向

有效域名

访问sina的时候,设置cookie.setDomain(“.baidu.com”);

这是第三方cookie,是不安全的。一般浏览器都不接受。

访问sina时候,生成的cookie,cookie.setDomain(.sina.com.cn);

这个是第一方cookie

---------------------------------------------

Session

为每一个客户端生成唯一的编号,记录客户端要购买的记录

服务器回应给客户端编号

客户端结账的时候,发送给服务器编号

服务器获得编号,通过编号查找客户端购买的商品

会话级别、持久级别

IE6默认是会话级别,所以新开浏览器读取不到session

解决方法:将jsessionid持久化

HttpSession httpSession = request.getSession();

httpSession.setAtt(name, value);

new Cookie(“JSESSIONID”,httpSession.getId());

cookie.setMaxAge(60 * 60);

cookie.setPath(“/work”);

response.addCookie(cookie);

-------------

禁用cookie后,session还能使用,对url进行重写,拼接jsessionid

response.encodeURL();

如果服务器进行URL重写,那么所有路径都必须重写

最好不要让用户禁用cookie

生命周期

Cookie生命周期

创建:

Cookie cookie = new Cookie(name,value);response.addCookie(cookie);

销毁:

会话级别,浏览器关闭就销毁

持久级别,过期后销毁 MaxAge

Session生命周期

创建:

request.getSession();

销毁:

情况一,服务器关闭

情况二,session过期时销毁

1.web.xml文件配置session过期时间

<session-config>

<session-timeout>30</session-timeout> 单位:分钟

</session-config>

默认一般不用配置,tomcat下web.xml有默认配置

2.调用session对象的方法

HttpSession session = request.getSession();

session.setMaxInactiveInterval(60 * 60); //单位是秒

情况三、调用invalidate()方法

session.invalidate();

--------------------------------

三种数据范围

ServletContext

HttpServletRequest

HttpSession

共同方法:

setAtt 存入属性

getAtt 取出属性

removeAtt 移除属性

什么时候使用?

ServletContext 服务器启动时创建,服务器关闭销毁

时间最长,所有Servlet共享,用于保存全局的数据

例如:数据库连接、工程配置属性、配置文件内容

HttpSession

在request.getSession()时候创建

在三种情况下销毁

用来保存与用户相关的数据

例如:登录信息、购物车

HttpServletRequst 在客户端发起请求时,服务器创建对象

在响应结束时,对象销毁

保存servlet向jsp传输数据信息

例如:某个操作,servlet将操作结果传递jsp

servlet将登录信息传递jsp、servlet将数据库查询结果传递给jsp

以上三种数据范围,ServletContext > HttpSession > HttpServeletRequest

宗旨:优先使用生命周期短的,有利于服务器资源控制。