其他分享
首页 > 其他分享> > Web基础了解版09-Cookie-Session

Web基础了解版09-Cookie-Session

作者:互联网

Cookie

Cookie

 是一种服务器发送给浏览器以键值对形式存储小量信息的技术。

当浏览器首次请求服务器时,服务器会将一条信息封装成一个Cookie发送给浏览器,浏览器收到Cookie,会将它保存在内存中(注意这里的内存是本机内存,而不是服务器内存)或者本地文件,那之后每次向服务器发送请求,浏览器都会携带该Cookie,服务器就可以根据Cookie的信息来处理业务。 

Cookie的缺点

Cookie的创建

  1. 在Servlet中创建Cookie对象,并添加到Response中。

  2. 然后打开浏览器访问Servlet程序,服务器将Cookie信息发送给浏览器。

  3. 浏览器收到Cookie后会自动保存,然后我们可以在下次浏览器发送请求时读取Cookie信息。

Cookie cookie = new Cookie("cookie-name", "cookie-Value");
response.addCookie(cookie);

Cookie的读取

读取Cookie主要指读取浏览器中携带的Cookie。

  1. 服务器端获取浏览器传过来的Cookie代码:request.getCookies()

  2. 遍历Cookie数组,获取所有Cookie信息

Cookie值的修改

// 创建一个已存在key的Cookie对象
Cookie cookie = new Cookie("cookie-name", null);
// 修改Cookie的值
cookie.setValue("this is new value");
// 通知浏览器保存修改,记得再次add
response.addCookie(cookie);

Cookie的有效时间

Cookie的实例方法setMaxAge( ) 控制Cookie存活的时间,接收一个int型参数,单位:秒。

Cookie的路径设置

Cookie的路径是指告诉浏览器访问哪些地址时应该携带该Cookie,也就是未设置的路径不需要携带

我们通过调用Cookie的实例方法setPath()来设置,这个路径由浏览器来解析。

Cookie cookie = new Cookie("cookie-path", "test");
// 设置Cookie的有效访问路径为/day14/abc/下所有资源
cookie.setPath(request.getContextPath() + "/abc");
// 通知浏览器保存修改
response.addCookie(cookie);

Session

由于Cookie有一很大的局限,于是Session出现了

Session的作用就是在服务器端保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie,所以本质上它也是一个Cookie,这个JESSIONID对应这个服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session。

Session是什么

Session的创建和获取

Session的工作原理

Session数据的存取

Session的作用域是当前会话,即对应的一个浏览器客户端,一个浏览器一个session对象非一个网页

Session 的有效时间

Session对象在服务器端不能长期保存,它是有时间限制的,超过一定时间没有被访问过的Session对象就应该释放掉,以节约内存。Session的计时是从最后一次被访问开始计时,统计其“空闲”的时间。

说明:Session对象默认的最长有效时间为30分钟。在tomcat的conf目录下web.xml配置文件中

设置

我们在web.xml文件中配置的Session会话超时时间是对所有Session都生效的。

setMaxInactiveInterval (int seconds) 设置用户多长时间没有操作之后就会Session过期。以秒为单位。

int getMaxInactiveInterval()  获取超时时间。以秒为单位。

invalidate()  强制失效

Session的活化和钝化

如果希望Session作用域中的对象也能够随Session钝化过程一起序列化到磁盘上,则对象的实现类也必须实现java.io.Serializable接口。不仅如此,如果对象中还包含其他对象的引用,则被关联的对象也必须支持序列化,

Session对象的释放

URL重写

当Cookie在浏览器端可能会被禁用时,我们就可以使用URL重写。

实现方式

//1.获取Session对象
HttpSession session = request.getSession();
//2.创建目标URL地址字符串
String url = "targetServlet";        
//3.在目标URL地址字符串后面附加JSESSIONID的值
url = response.encodeURL(url+";jsessionid=97120112D5538009334F1C6DEADB1BE7");        
//4.重定向到目标资源
response.sendRedirect(url);

标签:Web,浏览器,对象,09,JSESSIONID,Session,Cookie,cookie
来源: https://www.cnblogs.com/Open-ing/p/12112676.html