一.WebContextLoaderListener 监听类
它能捕捉到服务器的启动和停止,在启动和停止触发里面的方法做相应的操作!
它必须在web.xml 中配置才能使用,是配置监听类的
二.下面是搜集的一些listener方面的知识
简例一
监听用户上线与退出,显示在线用户
1、登陆页面 Login.jsp
<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
<%
session=request.getSession(false);
if(session!=null)session.invalidate();
%>
<html>
<head><title></title></head>
<body>
<form action="isOnline.jsp" method="post">
用户名:<input type="text" name="uName"/>
<input type="submit" value="上线">
</form>
</body>
</html>
2、控制页面(只是为了说明监听器问题,所以简单了点...) isOnline.jsp
<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
<html>
<head><title></title></head>
<body>
<%
session=request.getSession();
session.setAttribute("userName",request.getParameter("uName"));
response.sendRedirect("showOnline.jsp");
%>
</body>
</html>
3、显示页面 showOnline.jsp
<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" import="java.util.ArrayList" %>
<html>
<head><title></title></head>
<body>
<%
ArrayList showList=(ArrayList)(getServletContext().getAttribute("list"));
out.print("在线人数 "+showList.size()+"<br>");
for(int i=0;i<showList.size();i++){
out.print(showList.get(i)+"在线"+"<br>");
}
%>
<br>
<a href="Login.jsp">退出</a>
</body>
</html>
4、配置页面 web
.xml
<?xml
version="1.0" encoding="gb2312"?>
<!DOCTYPE web
-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN"
"http://java.sun.com/dtd/web
-app_2_3.dtd">
<web
-app>
<listener>
<listener-class>org.xiosu.listener.onlineListener</listener-class>
</listener>
</web
-app>
5、监听器 onlineListener.java
package org.xiosu.listener;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class onlineListener implements HttpSessionListener,
HttpSessionAttributeListener {
// 参数
ServletContext sc;
ArrayList list = new ArrayList();
// 新建一个session时触发此操作
public void sessionCreated(HttpSessionEvent se) {
sc=se.getSession().getServletContext();
System.out.println("新建一个session");
}
// 销毁一个session时触发此操作
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁一个session");
if (!list.isEmpty()) {
list.remove((String) se.getSession().getAttribute("userName"));
sc.setAttribute("list", list);
}
}
// 在session中添加对象时触发此操作,在list中添加一个对象
public void attributeAdded(HttpSessionBindingEvent sbe) {
list.add((String) sbe.getValue());
sc.setAttribute("list", list);
}
// 修改、删除session中添加对象时触发此操作
public void attributeRemoved(HttpSessionBindingEvent arg0) {
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
}
说明:本例只为简单介绍监听器,并未进行安全方面设置。
监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用
户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样
就可以给在线人数加1。常用的监听接口有以下几个:
ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。
ServletContextListener监听ServletContext。当创建ServletContext时,激发
contextInitialized(ServletContextEvent
sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent
sce)方法。
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session
Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed
(HttpSessionEvent se)方法。
HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发
attributeAdded(HttpSessionBindingEvent se)
方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent
se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent
se) 方法。
example:随服务器启动
<web
-app>
com.tb.listener.CountStartListener
package com.tb.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import com.tb.timertask.DoCountTask;
public class CountStartListener extends HttpServlet implements ServletContextListener
{
private static final long serialVersionUID = 1824920962239905170L;
public CountStartListener()
{
// TODO Auto-generated constructor stub
}
public void contextDestroyed(ServletContextEvent arg0)
{
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0)
{
DoCountTask.dotask();
}
}
相关推荐
Web.xml 中的 listener、filter、servlet 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...
了解`web.xml`的加载顺序和节点解析,有助于我们更有效地配置和管理Web应用程序,确保其在运行时能够按照预期工作。通过合理的配置,我们可以实现诸如初始化资源、拦截请求、处理异常、安全管理等多种功能,提高Web...
在Java Web开发中,`web.xml`文件是核心配置文件,它是应用服务器启动时加载的部署描述符,用于定义Web应用程序的结构、配置及行为。本篇将深入探讨`web.xml`的重要概念、元素、属性以及在实际项目中的应用。 1. **...
`web.xml`是Java Web应用程序中的核心配置文件,用于描述和管理Web应用程序的各种组件,如Servlet、过滤器(Filter)、监听器(Listener)等。它是一个XML文件,遵循特定的DTD(Document Type Definition)规范,...
web.xml文件中包含了Web服务器如何加载和初始化Web应用的信息,其中包括了Servlet、Filter、Listener等组件的配置信息,以及它们之间的关联和部署规则。 web.xml文件的结构首先需要遵守XML规范,它必须以XML声明...
在本文中,我们将对 web.xml 和 server.xml 中的主要配置项进行解析。 一、web.xml 配置文件 web.xml 配置文件是 Tomcat 服务器的主要配置文件,用于配置 Servlet、Servlet Mapping、Session 配置、MIME 类型映射...
当Web容器启动Web项目时,它首先读取web.xml文件中的<listener>和节点。 ServletContext是整个Web应用的上下文环境对象,它是在Web应用启动时被创建的,并且所有的Web组件都将共享这个上下文环境。Web容器会读取...
这些子元素可以在 web.xml 文件中出现零次或多次,并且可以包含自己的子元素。 DTD 文件 DTD 文件用于检查 XML 文档的有效性。DTD 文件规定了 web.xml 文件的语法和结构。web.xml 文件必须遵守 DTD 文件的规则,...
在Java Web开发中,`web.xml`是Web应用程序的部署描述符,它是服务器理解和运行Web应用的关键配置文件。本文将详细解释`web.xml`配置的各个方面,帮助开发者更好地理解和掌握其使用。 1. **定义头和根元素** `web....
在Java和JSP开发中,`web.xml`文件是一个至关重要的组成部分,它是Servlet容器(如Tomcat)的部署描述符。这个文件包含了关于Web应用程序的配置信息,包括Servlet的定义、过滤器、监听器、会话配置、MIME类型映射、...
本文将深入解析`web.xml`配置,帮助开发者理解其背后的原理和用途。 一、web.xml文件概述 `web.xml`被称为部署描述符(Deployment Descriptor),它位于Java Web项目的`WEB-INF`目录下。这个文件告诉应用服务器如何...
`Web.xml`文件是Servlet容器(如Tomcat、Jetty)解析的配置文件,它为Web应用程序提供了元数据,包括Servlet、过滤器、监听器、会话配置、错误页面等。该文件位于`WEB-INF`目录下,是Java Web应用的标准配置部分。 ...
《web.xml详细解析四合一》 web.xml是Java EE应用程序中的核心配置文件,它定义了Web应用的行为和结构。此文件对于理解Web应用如何运行至关重要,因为它提供了服务器如何处理请求、初始化Servlet、过滤请求以及处理...
下面将详细解析`web.xml`中`ContextLoaderListener`的运行过程。 ### 1. `web.xml`的作用 `web.xml`文件主要用来定义Servlet、过滤器、监听器等组件,以及它们的映射关系和初始化参数。它是Servlet容器(如Tomcat)...
本文将深入解析`web.xml`配置文件中的各个元素及其用法。 一、web.xml文件结构 `web.xml`文件通常分为三部分:`<web-app>`元素内的全局配置、`<servlet>`元素定义的Servlet和`<servlet-mapping>`元素映射的Servlet...
在Java Web应用程序中,`web.xml`文件是部署描述符(Deployment Descriptor),它是配置应用核心行为的重要文件。它定义了Servlet、过滤器、监听器、会话超时、错误页面等关键组件,使得开发者可以对Web应用进行定制...
在web.xml文件中,你可以通过`<listener>`元素定义监听器,当Web应用启动时,Tomcat会实例化这些监听器并调用相应的初始化方法。 ```xml <listener> <listener-class>org.springframework.web.context....
这个CHM文件深入解析了`web.xml`的各种配置元素,帮助开发者更好地理解和控制Web应用程序的运行方式。 1. **web.xml的作用** `web.xml`是Servlet容器(如Tomcat、Jetty等)启动时读取的配置文件,用于指导服务器...