Session和Cookie的原理快速使用

导读:本篇文章讲解 Session和Cookie的原理快速使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Session和Cookie(会话跟踪技术),从何而来,又将去往何处

> >为什么要使用会话跟踪技术

因为Http协议是无状态的,请求和请求之间是无法共享数据的,这样便无法知道会话是从什么时候开始,又是从什么时候结束的,也无法知道是谁发起了会话。

这时我们便需要使用到会话跟踪技术(Session、Cookie),来实现请求之间的数据共享。这也是平时为什么我们在浏览器中登录一次,就可以在浏览器中到处操作的原因。

注:

【1】HTTP协议:定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型,规定了如何去请求如何去响应。

【2】会话:会话是指一个终端用户与交互系统进行通讯的过程。即用户打开浏览器,访问了网站,做了一些操作(查数据,点击了a标签),到关闭浏览器的这个过程,就可以称之为一个会话。

>> Cookie

>>>>>>>>>>>>>>>>>>>>>>>>>> 什么是Cookie >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Cookie的原理

一种客户端技术,服务器(程序)把用户数据以cookie的形式,存到用户各自的浏览器;用户再次使用浏览器去访问服务器中的web资源的同时,会把浏览器中的cookie带回去,这时,服务器会把cookie中的数据读取出来,识别后对不同的浏览器(用户)做处理。

Session和Cookie的原理快速使用

 cookie存在浏览器

Session和Cookie的原理快速使用

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 如何使用Cookie >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

1、如何创建CooKie

在程序中直接new

Cookie cookie = new Cookie(String name,String value);  

(注)name : 给要共享的数据设置一个唯一的标识            

           value: 要共享的数据    

例如:Cookie  cookie = new Cookie(“currentName”,”xiaoming”);

2、如何把 Cookie 写给浏览器   

response对象.addCookie(cookie);  

例如:

Session和Cookie的原理快速使用

3、如何去获取Cookie 中的数据

Cookie[] cs =  request对象.getCookies();  

 遍历Cookie 数据,得到name 为currentName 的value 数据.    

cookie.getName() : 获取当前Cookie 对象的name值    

cookie.getValue() : 获取当前Cookie 对象的value 值

4、如何修改之前的Cookie

两种方式:

(1)再次创建一个新的Cookie 对象,name 跟要修改的Cookie 的name相同

(2) 直接修改Cookie 的value 值

           cookie对象.setValue(newValue);

注:这两种方式都会重新把Cookie响应给浏览器,然后去覆盖旧的Cookie

5、如何设置Cookie的有效时间

 cookie.setMaxAge(int expiry)   

参数(expiry 值)负数  :不保存Cookie(会话Cookie,默认)                                  

                                  0 : 删除Cookie                            

                             正数 :要保存的时间

删除Cookie(需要重新响应给浏览器去覆盖旧的Cookie):

        cookie.setMaxAge(0)

Session和Cookie的原理快速使用

6、Cookie的配置

cookie.setPath()

Cookie中配置path可以设置:限制访问哪些资源时会带Cookie

实例:

(1)默认path:在创建Cookie 的当前资源的目录下的资源访问会带上Cookie

         例:在目录/cookie/login创建Cookie ,那么只有/cookie/ 下的资源访问会带上Cookie

(2)自定义path:cookie.setPath();

          例:cookie.setPath(“/”) : / 下的资源访问都会带上Cookie(所有的资源的访问都需要带上Cookie )

7、一些常见的问题

(1)Cookie的中文问题

         使用 URLEncoder  和 URLDecoder 去设置编码格式

(2)Cookie的跨域问题

 

>> Session

>>>>>>>>>>>>>>>>>> 什么是Session >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Session,服务器端技术,可以让服务器在运行时为每一个用户的浏览器创建一个其独享的Session对象,存储该用户的数据。

特别地,session本质上就是cookie。

Session的执行原理

(1)浏览器第一次访问时,服务器端程序创建Session 对象存储用户的一些数据(数据是存储在服务端的);

(2)服务器把Session 对象的地址以Cookie 的形式响应给浏览器;

(3)浏览器再次访问服务器端资源就带上次Cookie(Session 的地址) 过去;

(4)服务器端获取到Session 的地址就可以直接操作上次地址上的空间(上次的Session),拿到该用户的数据。

 

>>>>>>>>>>>>>>>>>>> 如何使用Session >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

1、获取/创建 Session对象    

HttpSession req对象.getSession()         :     获取session 对象,如果存在则返回Session 对象,                                                                                                                               不存在则创建一个新的session对象并返回    

HttpSession req对象.getSession(true)   :     获取session 对象,如果存在则返回Session 对象,                                                                                                                               不存在则创建一个新的session对象并返回    

HttpSession req对象.getSession(false)     获取session 对象,如果存在则返回Session 对象

                                                                     不存在则返回null    

2、设置共享数据    

session对象.setAttribute(String name,Object value);    

(注) name : 给共享的数据起一个唯一的标识                

            value : 要共享的数据

3、获取共享数据    

session对象.getAttribute(String  name);    

(注) name : 要获取的共享数据的name

4、删除共享数据    

(1)删除指定名称的共享数据  : session对象.removeAttribute(String name);   

(2)销毁session 对象 : session对象.invalidate();  

5、Session设置超时时间(超过这个时间不做操作就销毁session对象)

默认超时时间是30分钟,

修改超时时间:  session对象.setMaxInactiveInterval(15) ;

注:使用的单位是秒。

6、使用Session的一些注意事项(补充)

(1)在分布式应用中使用Session ,Session中的对象需要实现 java.io.Serializable接口。(这涉及到远程调用的序列化问题)

        (注)序列化    :把对象信息存储为二进制 。 

                  反序列化 :把二进制信息恢复成对象。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117863.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!