HttpSession接口

  public interface HttpSession

  (https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html)

  一、介绍

  HttpSession接口提供了一种方式,使得用户在多个网页间浏览或请求时,他的身份信息可以得到验证,Server可以据此返回与他关联的内容。 

  Server容器通过这个接口,在一个HTTP客户端和一个HTTP服务端之间创建一个session(会话)。这个会话会跨越来自该用户的多个连接or页面请求,持续一段指定的时间(可以编程设定)。

  在一个用户多次访问某个站点时(其中不同的页面),Server容器中创建一个session,对应这一个特定的用户。Server能以多种方式维持一个会话,如cookies技术和重写URL。

  HttpSession接口允许servlet:

  • 查看和操作session相关的信息,如session识别码,创建时间以及上次被访问的时间;
  • 将对象绑定到session,这样的话,用户的相关信息就能在来自这个用户的多个连接中存在;

  当一个应用从一个session中存储一个对象或移除一个对象,session会检查这个对象是否实现了HttpSessionBindingListener。若它实现了该接口,servlet会通知该对象:您已经绑定到session或从session解绑了。通知消息会在绑定方法完成后发送,而对于将要失效或到期的会话,通知会在session失效或到期后发送。

  

  在分布式容器配置下,当容器在VM之间迁移session时,所有实现HttpSessionActivationListener接口的属性都会被通知。

  Servet必须处理这样一种情况:当客户端选择不加入session,如浏览器关闭cookies功能。在客户端加入session前,isNew方法都会返回true。而如果客户端不加入session,getSession方法将为每个来自该client的不同的request返回不同的session,isNew方法也会总是返回true。

  

  会话的作用域局限在当前的Web应用中(即一个ServletContext内),所以存储在一个上下文中存储的信息不会被另一个直接访问。

  二、接口方法

  1、long getCreationTime( )

  返回session的创建时间。

  

  2、String getId( )

  返回分配给这个session的唯一识别码,它由Servlet容器分配且依赖于实现。

  

  3、long getLastAccessedTime()

  返回上次被访问的时间,即Web容器上一次收到这个session所关联的client发送来的请求的时间。

  4、ServletContext getServletContext( )

  返回这个session所在的应用的ServletContext。

  5、void setMaxInactiveInterval(int interval)

  指定这个session的空闲存活时间,以秒为单位。

  即隔了指定时间后该session,server没有收到源自该session关联client的请求,Servlet容器就会清理该session。

  interval为0或者负数,表示该session一直有效。

  6、int getMaxInactiveInterval()

  返回上述的interval,即session的有效时间。

  7、Object getAttribute(String name)

  返回指定名称的对象,即绑定到这个session的对象。

  没有返回null。

  

  8、Enumeration<String> getAttributeNames()

  返回绑定到该session的所有对象的名字。

  Enumeration接口已经基本被Iterator接口替代了,功能是其子集,用于遍历。

  9、void setAttribute(String name, Object value)

  Binds an object to this session, using the name specified.

  If an object of the same name is already bound to the session, the object is replaced.

  10、void removeAttribute(String name)

  Removes the object bound with the specified name from this session.

  If the session does not have an object bound with the specified name, this method does nothing.

  11、void invalidate()

  Invalidates this session then unbinds any objects bound to it.

  12、boolean isNew()

  返回true——如果client还没有与这个session关联,或者client选择不加入session。

  例如,Server只使用了基于cookie的session机制,而client又禁用了cookie,那么每个请求的session都会是新的。

Java EE javax.servlet.http中的HttpSession接口的更多相关文章

  1. Java EE javax.servlet.http中的HttpRequest抽象类

    HttpRequest抽象类 public abstract class HttpServlet extends GenericServlet 实现的接口有:Serializable, Servlet ...

  2. Java EE javax.servlet中的ServletContext接口

    ServletContext接口 public interface ServletContext (https://docs.oracle.com/javaee/7/api/javax/servlet ...

  3. Java EE javax.servlet中的Servlet接口

    Servlet接口 public interface Servlet 其实现类有:FaceServlet.GenericServlet.HttpServlet 一.介绍 Servlet接口定义了所有s ...

  4. Java EE javax.servlet中的ServletResponse接口

    ServletResponse接口 public interface ServletResponse 子接口:HttpServletResponse 实现类:HttpServletResponseWr ...

  5. Java EE javax.servlet中的ServletRequest接口

    ServletRequest接口 public interface ServletRequest 子接口:HttpServletRequest 实现类:HttpServletRequestWrappe ...

  6. Java EE javax.servlet中的RequestDispatcher接口

    RequestDispatcher接口 public interface RequestDispatcher 一.介绍 定义一个对象,从客户端接收请求并将其发送到服务器上的任何资源(例如servlet ...

  7. Java EE javax.servlet中的ServletConfig接口

    ServletConfig接口 public interface ServletConfig 实现类:GenericServlet.HttpServlet 一.介绍 一个供servlet容器使用配置对 ...

  8. Java EE javax.servlet ServletContainerInitializer接口

    ServletContainerInitializer接口 public interface ServletContainerInitializer 一.介绍 该接口,允许在 web 应用程序的启动阶 ...

  9. 1,eclipse导入项目jdk版本不一样解决方案 2,java报javax.servlet.jsp cannot be resolved to a type

    一:eclipse导入项目jdk版本不一样解决方案 参考博文: https://www.cnblogs.com/chenmingjun/p/8472885.html 选中项目右键 --> Pro ...

随机推荐

  1. 两个int值相乘超过int最大值

    System.out.println(100000000*1000 ); //输出结果是:1215752192 先将100000000*1000 的结果转化为二进制: 10111 01001000 0 ...

  2. Linux 上的Tomcat配置输入域名直接访问项目

    申请的域名备案通过了,域名是在阿里云上面的买的,一块钱,当初买服务器是买着来玩玩的. 既然申请的域名已经备案通过了,也配置了域名解析 ,服务器上也装了Tomcat,部署了web项目,下面来配置下通过域 ...

  3. java.util.Date和java.sql.Date的区别和相互转化 (转)

    java.util.Date和java.sql.Date的区别及应用   java.util.Date 就是在除了SQL语句的情况下面使用 java.sql.Date 是针对SQL语句使用的,它只包含 ...

  4. POJ 1837 -- Balance(DP)

     POJ 1837 -- Balance 转载:優YoU   http://user.qzone.qq.com/289065406/blog/1299341345 提示:动态规划,01背包 初看此题第 ...

  5. leetcode94 不同的二叉搜索树

    solution 1:**动态规划 class Solution { public: int numTrees(int n) { vector<int> g={1,1,2}; for(in ...

  6. jQuery常用AJAX-API

    目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取得服务端当前时间 简单形式:jQuery对象.load(url) 返回结果自动添加到jQuery对象代表的标签中间 如果是Servlet的话,采 ...

  7. Swagger介绍及使用

    相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是后端调用 ...

  8. idea使用generatorconfig生成

    在maven工程中的resource中创建generatorConfigxml配置generatorConfigxml的配置pomxml生成对象的两种方式方式一使用idea的maven插件直接快速生成 ...

  9. [Hadoop] Yarn & k8s

    写在前面 一.大数据全栈 头两节讲完HDFS & MapReduce,这一部分聊一聊它们之间的“人物关系”. 其中也讨论下k8s的学习必要性. Ref: [Distributed ML] Yi ...

  10. Linux命令集锦:tmux命令

    tmux是一款优秀的终端复用软件,平时用到的强大功能有下面两个: 窗口管理:同时启用多个窗口: 保护现场:连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开 ...