`
m635674608
  • 浏览: 5062027 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JavaWeb中的Session、SessionListener、

    博客分类:
  • java
 
阅读更多

测试环境:Tomcat 5.0.28

JavaWeb中的Session

· 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。

· Session的创建(代表会话周期的开始):第一次调用request.getSession()方法时,会创建一个session对象。

· Session的销毁(代表会话周期的结束):在某个请求周期内调用了Session.invalidate()方法,此请求周期结束后,session被销毁;或者是session超时后自动销毁。

· 对于JSP,如果指定了<%@ page session="false"%>,则在JSP中无法直接访问内置的session变量,同时也不会主动创建session,因为此时JSP未自动执行request.getSession()操作获取session。

· 在session对象刚创建的第一个请求周期内,调用session.isNew()方法将得到true。

· 可以在web.xml文件中配置session默认的超时时间(分钟):

<session-config>
<session-timeout>10</session-timeout>
</session-config>

也可以调用session. setMaxInactiveInterval()方法设置session超时时间(分钟)

SessionListener

· 通过SessionListenr可以监听session的创建和销毁,步骤:
1.写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法
2.在web.xml中配置SessionListener:

<listener>
<listener-class>MySessionListener类全名</listener-class>
</listener>

· 当session 被创建和销毁时,容器会分别调用SessionListener的sessionCreated()方法和sessionDestroyed()方法,这 两个方法中传入了一个参数对象HttpSessionEvent,可以通过此对象的getSession()方法获取session对象。

应用:在线人数统计

import java.util.HashSet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();

// 在application范围由一个HashSet集保存所有的session
HashSet sessions = (HashSet) application.getAttribute("sessions");
if (sessions == null) {
sessions = new HashSet();
application.setAttribute("sessions", sessions);
}

// 新创建的session均添加到HashSet集中
sessions.add(session);
// 可以在别处从application范围中取出sessions集合

// 然后使用sessions.size()获取当前活动的session数,即为“在线人数”
}

public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
HashSet sessions = (HashSet) application.getAttribute("sessions");

// 销毁的session均从HashSet集中移除
sessions.remove(session);
}
}

<!--EndFragment-->
分享到:
评论

相关推荐

    快速学习JavaWeb中监听器(Listener)的使用方法

    在JavaWeb开发中,监听器(Listener)是一种重要的组件,主要用于监听和响应Web应用程序中的特定事件。通过监听器,开发者可以实现在特定事件触发时执行相应的处理逻辑,例如用户登录、注销、session创建、销毁等。...

    广工Java web课程 作业

    在作业中,可能会用到SessionListener或ServletContextListener等。 七、Web容器与Tomcat Java Web应用需要在Web容器中运行,如Apache Tomcat。学生需要了解如何配置和部署Web应用到Tomcat服务器,以及如何解决常见...

    Java Web监听器Listener接口原理及用法实例

    在上面的示例代码中,我们创建了一个实现了HttpSessionListener接口的SessionListener类,该类可以监听HttpSession中的事件,例如会话的创建和销毁等。 Java Web监听器Listener接口的注册: 要注册Java Web监听器...

    java代码获取数据库表里数据的总数操作

    Java代码获取数据库表里数据的总数操作是非常常见的操作,而JavaWeb中的Listener监听器是一种非常重要的概念,用于监听Web应用中某些对象、信息的创建、销毁、增加、修改、删除等动作的发生,然后作出相应的响应处理...

    用户重复登录问题

    public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { private static Map, String&gt; logonUsers = new HashMap(); // 保存当前登录的所有用户 public static final ...

    XML配置详解

    &lt;listener-class&gt;com.example.SessionListener&lt;/listener-class&gt; ``` ##### 5. `&lt;servlet&gt;` 和 `&lt;servlet-mapping&gt;` - **`&lt;servlet&gt;`**:用于定义servlet的名称和实现类。 - **`&lt;servlet-mapping&gt;`**:指定...

Global site tag (gtag.js) - Google Analytics