Java-Web监听器

在WEB端实现监听实质:

  实现一系列的监听接口(实现相应的接口,覆写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的覆写的方法,在各个方法中完成自己想要的操作,从而实现了监听)

  监听--就是在进行某种各个范围(application,session,request)中有相关值的设置、修改、替换的时候,这些操作都会触发事件,而Java中事件的代理机制,事件处理是利用listener机制,所以为了在事件触发的时候能够使自己能够采取相应的措施,就需要---->继承这样的listener,在listener中覆写相应的方法,覆写相应的事件处理方法,在对应的方法中处理对应的事件,也就是进行了监听(网上总结的特别好的)

  总结:主要是用来监听特定对象的创建或销毁、属性的变化,需要实现特定接口的普通类。

先关的接口

一、监听对象创建/销毁的监听器接口

Interface ServletRequestListener    监听request对象的创建或销毁

Interface HttpSessionListener        监听session对象的创建或销毁

Interface ServletContextListener     监听servletContext对象的创建或销毁

二、监听对象属性的变化

Interface ServletRequestAttributeListener 监听request对象属性变化: 添加、移除、修改

Interface HttpSessionAttributeListener    监听session对象属性变化: 添加、移除、修改

   Interface ServletContextAttributeListener  监听servletContext对象属性变化

三、session相关监听器

Interface HttpSessionBindingListener   监听对象绑定到session上的事件

  Interface HttpSessionActivationListener  监听session序列化及反序列化的事件



生命周期

监听器的使用步骤

1、写一个普通的java类,实现先关接口

2、不住xml文件

A、ServletRequestListener(在sevlet中的jsp方法传入的参数是ServletRequest,在HttpServlet中将其强制转型了,所以没有HttpServletRequestListener相关接口,使用最基本的ServletRequest)

创建对应的实现类

package comgqx.a_life;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

/**
 * 监听request对象的创建和销毁
 * @author Administrator
 */
public class MyRequestListener implements ServletRequestListener{

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		//获取request中的存放的数据
		Object obj=sre.getServletRequest().getAttribute("cn");
		System.out.println(obj);
		System.out.println("MyRequestListener.requestDestoryed()");
	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		//获取request中的存放的数据
				Object obj=sre.getServletRequest().getAttribute("cn");
				System.out.println(obj+"hhhhh");
		System.out.println("MyRequestListener.requestInitialized()");
	}

}

session对象在强制关闭浏览器的时候,不算是session对象的销毁,只能说是不能用了,所以不会触发销毁事件

package comgqx.a_life;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener{
	//创建销毁
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		System.out.println("MySessionListener.sessionCreated()");
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		System.out.println("MySessionListener.sessionDestroyed()");
	}

}

  

package comgqx.a_life;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletListener implements ServletContextListener{
	//一般在服务器启动的时候创建,服务器关闭后销毁,用的相对比较多
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("MyServletListener.contextDestroyed()");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("1........MyServletListener.contextInitialized");
	}

} 

写好配置文件

 <!-- 监听request对象的创建 -->
  <listener>
  	<listener-class>comgqx.a_life.MyRequestListener</listener-class>
  </listener>
  <!-- 监听servletContext对象的创建 -->
  <listener>
  	<listener-class>comgqx.a_life.MyServletListener</listener-class>
  </listener>
  <!-- 监听session对象的创建 -->
  <listener>
  	<listener-class>comgqx.a_life.MySessionListener</listener-class>
  </listener>

写一个jsp来试验

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP ‘index.jsp‘ starting page</title>
  </head>

  <body>
    i am coming!
    <%request.setAttribute("cn", "china");
      session.invalidate();	//销毁session(session最大活跃时间是30分钟)
    %>
  </body>
</html>

在启动服务器的时候会看到servlet对象的创建

然后通过jsp去访问,控制台如下显示

时间: 2024-10-06 11:59:49

Java-Web监听器的相关文章

创建Java Web监听器

之前从Java web一路学习过来,一直没有学习过Servlet容器类的一些高级用法,因为学完简单的JSP以及Servlet编写之后就开始了Spring的学习 对web应用的一些常用变量进行 application 也就是应用开启的生存周期做静态化处理 <listener> <listener-class>xyz.springabc.web.listener.StartUpListener</listener-class> </listener> 首先添加L

java web监听器统计在线用户及人数

在线用户使用HttpSessionListener监听器统计 每当一个session会话建立  在线用户人数+1 每当一个session会话销毁 在线用户人数-1 使用ServletRequestListener监听器统计用户信息 每当一个request建立  将当前用户放入集合 每当session会话销毁  将当前用户移出集合 我使用的是Servlet3.0  监听器直接使用注解@webListener即可 不用在web.xml中布局 在web.xml中配置session-timeout标签

web day20 单表练习之分页,java web监听器, 国际化

分页 什么是分页 例: 第N页/共M页 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页 口 go 分页的优点:只查询一页,不用查询所有页 分页数据 页面的数据都是由Servlet传递来的 Servlet: 1.当前页面页数:pageCode,pc(没有传递按默认第一页) 2.总页数:totalPages,tp(总记录数/每页记录数) 3.总记录数:totalRecored,tr(dao来获取,select count(*) fromt_customer)\ 4.每页记录数:

java web监听器和过滤器

2019-3-26 监听器:6+2 1.j监听器种类 2.监听器的编写步骤(重点): a.编写一个监听器类去实现监听器接口 b.覆盖监听器的方法 c.需要在web.xml中进行配置---注册 过滤器 Filter 过滤器的编写步骤(重点): a.编写一个过滤器类去实现过滤器接口 b.覆盖过滤器的方法 c.需要在web.xml中进行配置---注册 原文地址:https://www.cnblogs.com/houchen/p/10604782.html

Java Web总结二十一Listener监听器

一.事件三要素 1.事件源:操作事件的对象,例如:窗体Frame 2.事件监听器:事件监听器监听事件源,例如WindowListner,它是一个接口 3.事件,例如:单击事件,通过事件,可以取得事件源 二.适配器模式 1.当一个接口有较多的方法时,而实现类只需对其中少数几个实现,此时可以使用适配器模式 2.适配器模式常用于GUI编程 三.八种Web监听器 1.Web中有三个事件源,分别是ServletContext->HttpSession->ServletRequest 2.ServletC

【JAVA 核心技术】java web 中的监听器

为什么要有监听器? 监听器是用来处理一系列事件的java类,可被配置在java web项目中. 既然如此,为什么不用代码直接调用监听器? 这可能是因为J2EE规范规定的项目工程标准,用web.xml指定监听器, 然后服务器中间件如weblogic可以以遵照标准,读取web.xml, 运行监听器处理指定的事件. 这样,listener,servlet是类似的规范. 为什么要有web.xml? web.xml可以方便(也许不)地修改工程中用到的监听器. 这种东西像不像触发器或者轮询进程?如果像,它跟

在Java Web程序中使用监听器可以通过以下两种方法

之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响应,从本质上来说这些都是观察者模式的具体实现,在web程序中的监听器也不例外.在Java Web程序中使用监听器可以通过以下两种方法:通过注解@WebListener来标识一个自定义的监听器:[java] view plain copy@WebListener public class Custom

java 学习之路 - web监听器

什么是web监听器 web监听器主要是对Servlet对象进行监听和动作的,它可以监听客户端的请求,服务端的操作等 web监听器的分类 根据监听的域对象可以分为三类 1.监听Servlet上下文对象的监听器 1. 对Servlet上下文对象初始化及对象销毁动作进行监听的 ServletContextListener 2. 对Servlet上下文对象的属性进行监听的 ServletContextAttributeListener 2.监听HTTP会话 Session对象的监听器 1. 对HTTP

java web用监听器listener简单的实现在线统计人数

今天又重新学习了java web的基础 监听器技术,用sessionListener简单的实现了网页统计在线人数 (有一个bug就是当关闭网页的时候 session不会关闭依旧存在,除非关闭服务器),代码如下(前端网页代码就不显示了): LoginServlet.java: 1 import javax.servlet.ServletException; 2 import javax.servlet.annotation.WebServlet; 3 import javax.servlet.ht

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX