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
宗旨:优先使用生命周期短的,有利于服务器资源控制。
新闻热点
疑难解答