servlet监听器实现在线人数统计

简介: 一.准备知识 servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。

一.准备知识

  1. servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
  2. filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。
  3. listener:监听器,从字面上可以看出listener主要用来监听只用。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。通俗的语言说就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。
  4. servlet:servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
    (1)、装入:启动服务器时加载Servlet的实例;
    (2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;
    (3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
    (4)、销毁:停止服务器时调用destroy()方法,销毁实例。
  5. filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)。
    (1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
    (2)、每一次请求时都只调用方法doFilter()进行处理;
    (3)、停止服务器时调用destroy()方法,销毁实例。
  6. listener:类似于servlet和filter
    web.xml 的加载顺序是:context- param -> listener -> filter –> servlet

二.预备知识 
       通过ServletContext 的实例可以存取应用程序的全局对象以及初始化阶段的变量。 在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。
       注意:全局对象即Application范围对象,初始化阶段的变量指在web.xml中,经由<context-param>元素所设定的变量,它的范围也是Application范围,例如:

 
<context-param> 
<param-name>Name</param-name> 
<param-value>browser</param-value> 
</context-param> 
 

        当容器启动时,会建立一个Application范围的对象,若要在JSP网页中取得此变量时:

 
String name = (String)application.getInitParameter("Name"); 
${initPara.name} 
//若是在Servlet中,取得Name的值方法: 
String name = (String)ServletContext.getInitParameter("Name"); 

          目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,如下:

           突然不支持图片发布, 笔者也很郁闷,需要的读者自己查吧。。。

三.统计在线人数

       1.第一种方式

 
package webbook.chapter14;
 
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
public class CounterListener implements HttpSessionListener {
	private static long onlineNumber = 0;
 
	public static long getOnlineNumber() {
		return onlineNumber;
	}
 
	public void sessionCreated(HttpSessionEvent se) {
		onlineNumber++;
	}
 
	public void sessionDestroyed(HttpSessionEvent se) {
		onlineNumber--;
	}
}
 
当前应用中一共有<%=CounterListener.getOnlineNumber()%>人在线<br>

        统计的数字并不完全准确,因为可能用户下线了,session还没失效,怎么办呢?俺也不知道。。

        2.第二种方式

            显示谁在线,使用ArrayList,创建session时加入,销毁时删除(remove)。

四.结束语

        好好学习,天天向上。。。。。

目录
相关文章
|
8月前
|
存储 Java 数据安全/隐私保护
servlet过滤器与监听器
前言 Servlet 过滤器和监听器是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。 总的来说,过滤器和监听器都可以通过 Java Web 应用程序的配置文件或注解进行使用,方便灵活,并可以很好地实现框架与业务逻辑的分离,提高代码可维护性和扩展性。 过滤器(Filter) 1. 参数验证和转换:可以拦截用户提交的数据,并对数据格式进行验证、修正或转换。 2. 访问控制和认证:可以拦截请求并检查用户是否有访问特定资源的权限。 3. 日志记录:可以拦截请求并输出相应的日志信息,用于系统运行时的监测与故障排除。 4. 资源压缩和解密: 可以拦截响应并对
49 0
|
8月前
|
Java 应用服务中间件
如何在个人web项目中使用Servlet监听器?
如何在个人web项目中使用Servlet监听器?
|
10月前
|
存储 Java
【Java Web编程 十一】深入理解Servlet监听器
【Java Web编程 十一】深入理解Servlet监听器
63 0
【Java Web编程 十一】深入理解Servlet监听器
|
JavaScript
Servlet学习——监听器
Servlet学习——监听器
131 0
|
XML 设计模式 前端开发
Servlet、过滤器、监听器、拦截器
Servlet是javaEE规范中的一种,javaEE中的规范很多除了Servlet还有很多我们熟悉的JSP、JDBC、RMI、XML、EJB、JTS等等。
125 0
Servlet、过滤器、监听器、拦截器
|
存储 缓存 监控
servlet中的监听器接口
servlet中的监听器接口
78 0
servlet中的监听器接口
|
Java Spring 容器
【JavaWeb】之Servlet监听器
【JavaWeb】之Servlet监听器
109 0
|
存储 编解码 Java
Java Web之Servlet中过滤器与监听器的解析及使用(附源码)
Java Web之Servlet中过滤器与监听器的解析及使用(附源码)
127 0
Java学习路线-50:Servlet监听器Listener
Java学习路线-50:Servlet监听器Listener
|
Java 应用服务中间件
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)