Cookie-Session

1.Cookie

Cookie技术是将用户的数据存储到客户端(浏览器)的技术。

    (1) 创建Cookie

        Cookie cookie = new Cookie(String cookieName, String cookieValue);
        response.addCookie(cookie); //向客户端写Cookie

         则 cookie会以响应头的形式发给客户端
    注.cookie中只能存储少量字符串信息,字符串不能有空格,尽量不要存中文。

    (2) Cookie的有效期
        
        设置Cookie的有效期:cookie.setMaxAge(int seconds); ---时间秒

    注:*如果不设置持久化时间,cookie存储在浏览器的内存中,浏览器关闭cookie信息销毁 (会话级别的cookie)

           *如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里

     例如:设置cookie信息在浏览器的磁盘文件中存储的时间是半分钟,过期浏览器自动删除该cookie信息

    (3) 设置Cookie的携带路径
        如果不设置Cookie的path,Cookie也是有路径的。这个路径就是请求的路径

        在请求http://localhost/day01/servlet时,服务器响应了一个Cookie,那么这个Cookie的默认路径就是/day01/
        在请求http://localhost/day01/servlet/hello时,服务器响应了一个Cookie,这个Cookie的默认路径就是/day01/servlet/

        也就是说,在访问子路径时,会包含其父路径的Cookie,而在访问父路径时,不包含子路径的Cookie

    (4) 设置js脚本禁止访问Cookie
        cookie.setHttpOnly(true);

        如果cookie中设置了HttpOnly属性,则通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

2.HttpSession
    Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客户的唯一性标识JSESSIONID。
        (1) 获取Session对象
            Tomcat容器会给每一个客户端用户创建一个session对象

   HttpSession session = request.getSession();      
       //如果当前用户的session对象不存在,创建session对象,如果存在,直接获取
   session.getId()   
       //JSESSIONID
HttpSession session = request.getSession(false);    
       //只获取当前用户的session对象,获取不到抛出异常

            判断当前session会话,是否是新创建出来的

boolean isNew = session.isNew();

         (2) HttpSession 对象存储数据
              Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

session.setAttribute(String name, Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);

         (3) HttpSession 对象的生命周期
              public void setMaxInterval(int interval)

              设置Session的超时时间 (以秒为单位) ,超过指定的时长,Session就会被销毁
                   *值为正数的时候,设定Session的超时时长。
                   *负数表示永不超时 (极少使用)

             public int getMaxInactiveInterval() 获取Session的超时时间

             public void invalldate() 让当前Session会话马上超时无效

         Session的默认超时时长为30分钟

         因为在Tomcat 服务器的配置文件web.xml 中默认有以下的配置,它就表示配置了当前Tomcat服务器下的所有Session超时配置默认时长为:30分钟

<session-config>
   <session-timeout>30</session-timeout>
</session-config>

         如果说,希望你的web工程默认的Session的超时时长为其他时长。你可以在你自己的web.xml配置文件中做以上相同的配置。就可以修改你的web工程所有Session的默认超时时长。

         如果说,你只是想修改个别的超时时长,就可以使用上面的API setMaxlnactivelnterval (int lnterval); 来进行单独的设置。
         session.setMaxInactivelnterval (int lnterval); 单独设置超时时长

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hvk_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值