更新时间:2018-08-31 来源:黑马程序员技术社区 浏览量:
一、 会话技术概述?
1、 什么是一次会话
用户打开浏览器访问某个网站, 在这个网站上浏览任意页面, 访问完成后将浏览器关闭的过程称为是一次会话.
2、 学习会话要解决的问题是什么?
会话技术是用于解决, 在会话过程中数据的保存问题。
3、 常用的会话技术有哪些
Cookie: 将数据保存到客户端浏览器。
Session: 将数据保存到服务器端。
二、 Cookie详解
1、 Cookie是什么?
Cookie是一个小信息, 由服务器写给浏览器的并且由浏览器来保存。
客户端保存的Cookie信息, 可以再次带给服务器。
2、 创建Cookie
Cookie cookie = new Cookie("username", "admin");
//设置cookie的有效路径, 将有效路径设置为当前应用, 则访问当前应用下的所有资源, 浏览器都会带着它给服务器。
cookie.setPath(request.getContextPath());
//设置cookie的有效时间, 不设置就是会话过程, cookie存在浏览器的内存中
cookie.setMaxAge(60 * 60 * 24 * 7);
//将cookie输出到客户端
response.addCookie(cookie);
3、 获取Cookie
// 获得浏览器带过来的所有的Cookie
Cookie[] cookies = request.getCookies();
4、 Cookie的分类
会话级别: 当没有设置Cookie的有效时间, 默认就是会话级别的Cookie.关闭浏览器Cookie就会销毁.
持久级别: 通过设置Cookie的有效时间.那么关闭浏览器Cookie还会存在.
5、 删除持久级别的Cookie
//通过setMaxAge(0), 可以销毁持久级别的Cookie。 但前提条件是, Cooike的有效路径必须一致。
Cookie cookie = new Cookie("username",null);
cookie.setPath(request.getContextPath());
cookie.setMaxAge(0);
response.addCookie(cookie);
三、 Session详解
1、 Session是什么?
Session是一个域对象, 可以用于保存用户数据
Session的作用域范围是一次会话
2、 创建Session对象
服务器端第一次调用request.getSession()时创建session
3、 销毁Session对象
Session过期。
注: 默认过期时间为30分钟, 可以通过配置web.xml修改Session的过期时间
例:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
非正常关闭服务器。
注: 如果正常关闭服务器, session会序列化到硬盘.当服务器重新启动时, 会执行反序列化。
调用session.invalidate()方法。
4、 Session的执行原理
当服务器端第一次调用request.getSession()的时候, 服务器会自动为其创建一个Session对象, 并通过Cookie技术将Session的id, 发送给客户端浏览
器。 以后客户端再请求本应用中其他资源的时候, 会自动将此Cookie携带到服务器端。 这样, 服务器端在接到请求时候, 就会收到Session的id, 并根据id在
内存中找到之前创建的Session对象, 提供给请求使用。
作者:黑马程序员技术社区
首发:http://java.itheima.com/