cookie和session
Posted KyleInJava
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie和session相关的知识,希望对你有一定的参考价值。
一、we为什么要用cookie和session
由于http协议是无状态的,在我们日常访问对网站进行访问时,服务器需要区分当前是哪个用户在请求,这样才能根据特定的用户作出特定的响应,这样就用到了cookie和session。
二、cookie
1、Cookie保存在客户端
2、只能保存字符串对象,不能保存对象类型
3、需要客户端浏览器的支持,用户可以禁用cookie
4、一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
5、一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
6、浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
7、如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
8、cookie 相关api
new Cookie(key,value) 创建cookie
HttpServletRequest.getCookies() 获取cookie
HttpServletResponse.addCookie(Cookie) 添加cookie到响应中
public int getMaxAge() 获取cookie过期时间
public void setMaxAge(int expiry) 设置cookie过期时间
三、session特点
在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。不是访问一个页面就创建session,而是遇到语句request..getSession();就创建了一个session。
session相关api
request.getSession(); (等价于request.getSession(true);)表示如果session对象不存在,就创建一个新的会话
request.getSession(false); 表示如果session对象不存在就返回null,不会创建新的会话对象
public void setMaxInactiveInterval(int interval) 设置最大非活动时间间隔,单位秒;如果参数interval是负值,表示永不过时。tomcat中session的有效期默认为30分钟。
<!--通过配置web.xml来设置会话超时,单位是分钟 允许两种方式并存,但前者优先级更高 --> <session-config> <session-timeout>1</session-timeout> </session-config>
以上是关于cookie和session的主要内容,如果未能解决你的问题,请参考以下文章