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>

    

原文地址:https://www.cnblogs.com/kyleinjava/p/9009705.html