概述
cookie是一种会话技术。它能够将需要的信息持久的保存在用户的磁盘上以供下次请求资源时带上这些信息。比如网址的自动登入。用户第一次登入时将账号密码保存在用户的磁盘上然后用户再次访问这个网址的时候就不需要再自己手动登入
- 会话管理技术cookie介绍
在介绍cookie前需要先了解一些知识。
一,浏览器中的会话
当你打开浏览器然后访问了多个网站在关闭浏览器的过程就是浏览器中的会话。这个过程也叫一次会话。
会话管理技术cookie介绍
在与浏览器会话的过程中总会产生各种数据。有些数据我们需要将其保存下来。这时候就要用到会话管理技术。cookie就是其中一种。还一种是session
cookie是客户端技术,它会将用户访问服务器资源产生的数据保存在用户客户端的磁盘中。这样在下次访问同一个服务器资源的时候就能够带上这些用户各自的数据来进行操作
1,创建一个cookie并添加到浏览器中
Cookie cookie = new Cookie(String name,String value);
方法 | 返回值 | 描述 |
---|---|---|
Cookie cookie = new Cookie(String name,String value); | 构造方法 | 创建一个cookie,这个cookie保存了一个name=value这样的值 |
response.addCookie(Cookie cookie) | void | 该方法把一个cookie设置到浏览器中,在浏览器的响应头中会有一个Set-Cookie:name=value这样的值 |
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
//创建一个cookie,传入一个name和value.下面这个cookie里面就保存了一个name=zhangsan这样的值
Cookie cookie = new Cookie("name","zhangsan");
//然后调用response.addCookie(Cookie cookie)后才能把cookie设置到浏览器中
response.addCookie(cookie);
}
然后启动在访问该资源
这样一个Cookie就设置完了。
2,获取Cookie
设置了Cookie就是为了下次访问能从这个Cookie上获取数据。
方法 | 返回值 | 描述 |
---|---|---|
request.getCookies() | Cookie[] cookie | 获取所有Cookie,返回一个Cookie数组.如果没有Cookie返回null |
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if(cookies!=null){
//这样来获取保存在客户端上的cookie
for (Cookie cookie: cookies) {
System.out.println(cookie.getName()+"="+cookie.getValue());
//cookie的其他操作
}
}else{
Cookie cookie = new Cookie("name","zhangsan");
response.addCookie(cookie);
}
}
执行第一次设置cookie在执行第二次后结果如下
3,设置有效时间
cookie默认情况下在浏览器关闭后就会失效。即一次会话后就失效。因为cookie是放在浏览器缓存的,浏览器关闭会清除缓存所以cookie会失效。要想使这个cookie在浏览器关闭后仍然有效就需要设置有效时间将其写到磁盘下。
方法 | 返回值 | 描述 |
---|---|---|
cookie.setMaxAge(int second) | void | 设置cookie有效时间,单位为秒,在有效时间内即便关闭了浏览器cookie也不会失效 |
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = new Cookie("name","zhangsan");
//设置有效时间为60秒
cookie.setMaxAge(60);
response.addCookie(cookie);
}
然后执行结果如下:
在这60秒期间即便你关闭浏览器在打开然后在访问该资源也能获取cookie
4,设置有效路径
有时你需要你设置的cookie在某个路径下的资源都能共享使用,那就用以下这个方法。
方法 | 返回值 | 描述 |
---|---|---|
cookie.setPath(String url); | void | 设置有效路径,在该路径下的所有资源都能共享这个cookie |
有以下场景
/servlet1
public class ServletDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = new Cookie("name","zhangsan");
//设置h5所在的路径
String realPath = this.getServletContext().getRealPath("/html");
cookie.setPath(realPath);
response.addCookie(cookie);
}
}
//servlet2
public class ServletDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取cookie,如果有cookie就表示有效路径设置成功
Cookie[] cookies = request.getCookies();
System.out.println(cookies);
}
}
//h5.html部分
<body>
<a href="http://localhost:8080/qjq/servletDemo2">访问servletDemo2</a>
</body>
接着启动项目,首先先进入h5.html访问servletDemo2
结果如下,这时没有cookie:
然后访问servletDemo1设置一个cookie,在从h5.html访问servletDemo2
结果如下,这时已经有cookie了说明有效路径设置成功
5,Cookie的生命周期
Cookie也是一个类,我们需要关注一下它什么时候生成什么时候消亡。这样我们才能更好的确定何时获取Cookie
(1)Cookie的出生
当执行完这句代码的时候就代表这个Cookie诞生
Cookie cookie = new Cookie(String name,String value);
(2)Cookie的消亡
默认情况下,在你关闭客户端后Cookie就会消失。此时你去获取cookie会返回null
如果设置了有效时间后则需要在有效时间到期后才会消亡。
6,cookie的其他方法
方法 | 返回值 | 描述 |
---|---|---|
getPath() | String | 获取cookie的有效路径 |
getName() | String | 获取cookie的名称 |
getValue() | String | 获取cookie的值 |
getMaxAge() | int | 获取cookie的有效期,单位为秒 |
setDomain(String pattern) | void | 设置cookie的有效域 |
getDomain(String pattern) | String | 获取cookie的有效域 |
最后
以上就是开心信封为你收集整理的JAVA中级(十一)cookie详解和使用,生命周期会话管理技术cookie介绍的全部内容,希望文章能够帮你解决JAVA中级(十一)cookie详解和使用,生命周期会话管理技术cookie介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复