美文网首页
java笔记2-servlet-会话管理

java笔记2-servlet-会话管理

作者: arkulo | 来源:发表于2017-02-21 14:19 被阅读39次

cookie增删改查

Cookie cookie = new Cookie("username","arkulo");
cookie.setMaxAge(7*24*60*60);单位是秒,一星期内有效
response.setCookie(cookie);

Cookie[] cookies = request.getCookies();
if(cookies != null)
{
  for(Cookie ck:cookies)
  {
    String name = ck.getName();
    String value = ck.getValue();
  }
}

改(除了value,MaxAge其它都应该保持不变,负责浏览器会认为不是同一个cookie)

for(Cookie cookie : cookies){
     if(cookie.getName().equals(name)){
          System.out.println("原值为:"+cookie.getValue());
          cookie.setValue(value);
          cookie.setMaxAge(30 * 60);// 设置为30min
          response.addCookie(cookie);
     }
}

删除

 for(Cookie cookie : cookies){
       if(cookie.getName().equals(name)){
             cookie.setValue(null);
             cookie.setMaxAge(0);// 立即销毁cookie
             cookie.setPath("/");
             response.addCookie(cookie);
        }
}

session增删改查

通过HttpServletRequest的getSession()方法能够取得HttpSession对象,这个对象最关键的三个函数就是:

setAttrbute() 添加或修改session
getAttrbute() 查询session
invalidate() 销毁session

HttpSession是非线程安全的,所以必须注意属性设定时共享存取的问题

------------说说SESSION ID的事情------------

Paste_Image.png

在web容器中,会有很多个HttpSession实例(是web容器的一个java对象),HttpSession中存放的属性,自然也就存放于服务器端的web容器之中,每一个SESSION ID都有一个特殊的SESSION ID(默认用浏览器的cookie保存),当浏览器请求应用程序时,会将cookie中存放的SESSION ID一并发给应用程序,web容器会根据SESSION ID来找出对应的HttpSession对象,然后供用户getSession()。但是保存SESSION ID的这个cookie默认是关闭浏览器就失效,但是这时候服务器端容器中的HttpSession对象可还是存在的
我们可以设置session的过期时间,两种方式

  • 通过HttpSession的setMaxInactiveInterval()方法,设置浏览器多久没有请求应用服务器,则 session失效,单位秒
  • 也可以是web.xml中设置,单位是分
Paste_Image.png

请注意!!你设置的是session的过期时间,不是cookie在浏览器保存的时间!只要浏览器已关闭,就没有cookie了,也就没有SESSION ID了,即使服务器端容器中的HttpSession对象还存在,也没有意义了!

据说servlet3.0中,有个SessionCookieConfig接口,提供了可以控制cookie的一些方法

相关文章

  • java笔记2-servlet-会话管理

    cookie增删改查 增 查 改(除了value,MaxAge其它都应该保持不变,负责浏览器会认为不是同一个coo...

  • Cookie和Session

    本篇文章简单记录了关于Web会话管理技术的学习笔记。目前常用的会话管理技术是Cookie与SessionCooki...

  • shiro

    Apache Shiro -- Java安全框架执行身份验证, 授权, 密码学和会话管理 1, Authentic...

  • java基础学习:JavaWeb之Cookie和Session

    其他更多java基础文章:java基础学习(目录) 一、会话概述 1.1、什么是会话? 会话可简单理解为:用户开一...

  • day12_编码实战&Jsp基础

    1课程回顾 会话管理 1)会话管理:管理浏览器和服务器之间的会话过程中产生的会话数据 2)Cookie技术:会话数...

  • 常见红队RCE漏洞利用小结

    Shiro: Apache Shiro是常见的Java安全框架,执行身份验证、授权、密码和会话管理。 历史维度: ...

  • 【译】StackOverflow:java中管理session的

    这篇文章来自于StackOverflow中的问答,主要讨论了web服务器会话管理的原理。原文 问题:Java中管理...

  • springBoot配置Shiro

    1.1 Shiro 1.1.1 简介 是一个开源的轻量级的java安全框架,提供身份验证授权,密码管理以及会话管理...

  • java笔记2-servlet-处理请求与响应

    目标 怎么处理请求与响应web容器到底是怎么实现请求与响应的HttpServletRequest处理请求http请...

  • 1.认识Shiro

    1.什么是shiro shiro是一个基于java的开源的安全管理框架。可以完成认证,授权,会话管理,加密,缓存等...

网友评论

      本文标题:java笔记2-servlet-会话管理

      本文链接:https://www.haomeiwen.com/subject/bapqwttx.html