会话技术Cookie 和Session
-
会话技术Cookie
-
概念:Cookie是一门客户端会话技术,什么是会话技术?就是在客户端和服务器端之间一次会话多次请求间发起的请求和响应。当浏览器向服务器端发送请求,会话建立。当有一边断开连接。会话结束
-
作用:Cookie 可以用来共享数据。并且将数据存储到客户端浏览器。
-
使用步骤:
-
创建Cookie 对象 ,绑定数据 :Cookie cookie=new Cookie(String name, String value); 他们的数据是以键值对的形式存储的
-
使用response.addCookie(Cookie cookie ); 发送Cookie到客户端
-
使用request.getCookie();获取Cookie,返回的是一个Cookie[] 类型的数组
-
使用 Cookie.getName("键名") 获取相对应的值的名字。
-
使用 Cookie.setMaxAge(int time) 来设置该Cookie在客户端浏览器保存的时间。 参数传递正数代表 持久化的时间。 参数传递负数代表默认值,也就是浏览器关闭。Cookie销毁,当参数传递为0,代表销毁Cookie。
-
-
Cookie 的共享范围
-
在同一个Tomcat服务器中。部署多个web项目是默认不可以共享CooKie 的。但是我们可以通过setPath(String path)来实现在,这里的path是传递项目的虚拟路径,可以设置为“/”这样他的共享范围是最大的
-
在不同的Tomcat服务器中共享Cookie的方法:可以通过setDomain(String Path) 来设置他的一级域名相同。来共享Cookie
-
-
Cookie 的特点和作用
-
是一门浏览器端的会话技术,可以存储数据到浏览器客户端。
-
浏览器对Cookie 的存储大小有限制。当Cookie的最大为4kb,同一个域名下最多存储20个Cookie
-
-
-
会话技术Session
-
概念:Session 是一门服务器端的会话技术,也是在一次会话多次请求之间共享数据。存储数据
-
作用:用于存储数据到服务器端,共享数据。
-
使用步骤:
-
通过requset.getSession() 来获取Session对象。返回的是一个HttpSession session 对象。
-
通过 session.setAttribute(String name, Object value) 来设置值,没有返回值
-
通过 session.getAttribute(String name) 来取值 ,返回一个Object类型的值
-
通过 session.removeAttibute(String name),来删除Session 中的值 ,没有返回值
-
-
实现原理
-
Session 的实现是依赖于Cookie 来实现的。当客户端浏览器第一次发送请求,通过requset.Session()获取Session对象的时候是没有的。那么久会在内存中创建一个Session对象,并且会在响应头中通过设置 set-Cookie 的值,这个值就是内存中创建的Session 对象地址值JSESSIONID,当客户端在次请求时候那么通过request.getSesion() 就会拿到JSESSIONID 的地址值,找到内存中相对于的Seesion对象
-
空行
-
-
Session存储的时间,存储数据大小,以及销毁
-
默认情况下。session失效时间为30分钟。 这个时间可以在web.xml 文件中设置 在 <Session-config><Session-config> 标签中设置
-
session对象在服务器关闭时候被销毁
-
session对象也可以调用方法invalidate()方法自己杀死自己
-
Session 对象存储数据不同于Cookie 。Session 对象没有大小限制,可以存储任意类型的数据
-
-
服务器端关闭如何确保数据不丢失
-
可以是用Session 钝化,在服务器关闭前,将Session对象序列化到客户端硬盘上
-
使用Session 活化,将Session文件读取到内存中就可以了
-
-
-
Session 会话技术和Cookie 会话技术的区别
-
Session 是服务器端会话技术,数据存储在服务器,存储数据大小没有限制。类型没有限制可以存储任意大小,Session 存储数据是安全的
-
Cookie 是客户端会话技术,数据存储在客户端浏览器,单个Cookie 最大不能超过4kb,同一域名下不能超过20个,Cookie 是不安全的,一般用于存储一些不太重要的数据
-
新手记录学习。欢迎大佬们留言中指正