Cookie和Session学习
Cookie
Cookie简介:
Cookie是一种客户端的会话技术。会话的生命周期是打开浏览器网页窗口到关闭浏览器网页窗口。cookie如果没有设置最大存活时间,在关闭浏览器网页窗口时,cookie就会消失。
Cookie是通过拓展HTTP协议来实现的,服务器通过HTTP协议的响应消息头添加cookie,响应给浏览器(如果设置了cookie的最大生存时间,就会在浏览器中有缓存),浏览器再次请求客户端时,会在http的请求消息头携带cookie信息,访问服务器,这时,服务器就可以识别出这个浏览器之前访问过。
Cookie的相关api介绍:
request.getCookies():获取cookies[],在浏览器一个会话可能包含多个cookies。
response.addCooike():给响应客户端的信息头加上cookie字段
Cookie的构造方法
Cookie(String name,String value)
name:表示cookie的名称
value:表示cookie的值
注意:cookie的名称必须遵守RFC规范。只能包含ASCII字符,不能包含逗号,分号,空格,$开头。
cookie的名称在创建之后不得更改。
1
2
3
4
5
6
7
setPath():设置cookie的路径,让客户端知道是哪个的web应用的cookie。用于区别不同web项目的cookie。
getPath():获取cookie的路径,可以通过路径来匹配cookie。
setMaxAge():设置cookie的最大生存时间,以秒为单位。
如果setMaxAge()的值为负数:表示不存储cookie
如果为0,表示删除cookie
如果大于0,表示cookie的最大生存时间
1
2
3
getMaxAge():返回的是cookie的最大生存时间。
setSecure():设置cookie安全,浏览器只会在HTTPS等安全协议中传输。
Session(所指的是HttpSession)
Session简介
在Web开发中,服务器会为每个用户浏览器创建一个会话对象(Seesion对象),一个用户浏览器独占一个Session对象。
会话(Session)的生命周期:从打开浏览器网页窗口到关闭浏览器网页窗口。
Session对象存储着用户会话所需的属性及配置信息。在其生命周期内用户的属性及配置信息,可以在多个Servlet之间共享。
服务器创建Session出来后,会把Session的id,以cookie的形式返回给客户端,只要会话未结束,客户端再次访问服务器时,会带有Session的id号的cookie信息。
Session的相关API
request.getSession():返回的是一个HttpSession。
getAttribute(String name):通过name获取session存储的值
setAttribute(String name,Object value):给Session设置值。
getAttributeNames():获取Session所有的配置信息名。
getId():获取Session的id。
isNew():如果客户端还不知道该会话,或者客户端选择不加入该会话,则返回true。
getLastAccessedTime():返回客户端上一次发送与此会话关联的请求的时间。
getMaxInactiveInterval():返回 servlet 容器在客户端访问之间将使此会话保持打开状态的最大时间间隔,以秒为单位。
setMaxInactiveInterval():设置会话保持的最大时间间隔,以秒为单位。
invalidate():使此会话无效
Session销毁的方式
调用invalidate()方法强制销毁
超时(默认30分钟)
通过setMaxIncativeInterval(int interval)设置最大间隔时间,单位秒。
在web.xml中配置
<session-config>
<!-- 设置Session的有效时间,单位是分钟 -->
<session-timeout>5</session-timeout>
</session-config>
1
2
3
4
Cookie和Session的区别
Cookie是把用户数据写给用户的浏览器,Session的数据放在服务器上。
cookie的数据是不安全的(本地会进行缓存,容易被人获取),Session会更安全。
Cookie保存的数据有大小限制,不超过4k。
Cookie保存的是字符串,Session保存的是对象。
---------------------
【转载】
作者:张行之
来源:CSDN
原文:https://blog.csdn.net/qq_33689414/article/details/59102146
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|