会话技术介绍及 Cookie

一、会话技术介绍

1. 会话:为了实现某一个需求,浏览器和服务器之间会产生多次的请求和响应;

从打开浏览器访问服务器开始,到访问服务器结束关闭浏览器,

之间的多次请求和响应称为  “浏览器和服务器之间的一次会话”

2. 会话中的数据存储问题

如果使用request域的话,其是一次请求一次响应,作用范围太小;

如果使用ServletContext域的话,代表整个web应用,容易混乱;

所以采用Cookie技术和Session技术

一、定义

1.Cookie工作原理

  Cookie是通过Cookie请求头Set-Cookie响应头,将会话中的数据  保存在客户端 ; 是客户端的技术 ;

  具体如下图:

二、相关操作

1.  创建Cookie

Cookie cookie = new Cookie(String name, String value);//创建Cookie 对象

cookie.getName();//获取Cookie的名字
cookie.getValue();//获取Cookie的值

cookie.setValue(String value);//设置Cookie的值

 

cookie.setPath(request.getContextPath()+"/");//在访问该应用下的任何一个资源时都能够将Cookie带回来

cookie.setMaxAge(0);

2.  将Cookie添加到响应中

response.addCookie(Cookie cookie);

//将Cookie对象添加到response响应中, 可以多次调用该方法, 将多个Cookie添加到响应中.

3.  获取请求中的Cookie

request.getCookies();

//该方法会返回请求中所有的Cookie对象组成的数组, ;如果请求中没有任何Cookie信息, 则返回null

4. 删除Cookie

1) 可以间接删除Cookie:可以向浏览器再发一个同名、同path、同domain(如果前后都不设置, 则domain默认是相同的)的Cookie  ;   

     由于浏览器是根据Cookie的名字+path+domain来区分一个Cookie的,如果两个Cookie的名字+path+domain完全一致,则浏览器会认为是同一个Cookie,这时后发的Cookie会覆盖之前发送的Cookie,而后发的Cookie只要设置setMaxAge方法值为0,浏览器收到之后也会将后发的Cookie立即删除

三、常用方法

1. setMaxAge() 设置Cookie的最大存活时间(S)

如果不设置该方法, Cookie是默认保存在浏览器的内存中, (即默认生命周期为一次会话时间

如果中途关闭浏览器, 随着浏览器内存的释放, 该Cookie信息也随着内存的释放而丢失!

如果设置该方法, Cookie将会以文件的形式保存在浏览器的临时文件夹中

2. setPath()   设置cookie被浏览器带回来的路径

1)  Cookie被浏览器带回来的路径默认是发送cookie的Servlet所在的路径 

比如发送Cookie的Servlet为: http://localhost/day16_2/CookieDemo2

<< ----  >>  cookie被浏览器带回来的路径就是 CookieDemo2 所在的路径:http://localhost/day16_2/,这就是根路径

这时, 浏览器在访问day16_2应用下任何一个资源时都可以带着Cookie, 例如:http://localhost/day16_2/aaa

2)这时希望该应用下的任何一个资源都可以将Cookie带回来 

这时则需要设置Cookie的路径为当前WEB应用的根路径:  cookie.setPath(request.getContextPath()+”/”);

备注:后面拼上斜杠的目的是:如果当前WEB应用是缺省的WEB应用, 则通过getContextPath方法获取到的WEB应用的路径为一个空字符串, 而路径不能为空, 所以后面拼上一个斜杠

猜你喜欢

转载自blog.csdn.net/qq_24271537/article/details/81176303
今日推荐