【3月17日】Java 监听器

来源:互联网 发布:npm 安装淘宝镜像 编辑:程序博客网 时间:2024/05/29 18:53

1. 认识监听器(Listener)

监听器实际是实现了特定接口的类,这个类在web.xml中进行描述。服务器启动时,这个类可以监听一些关键事件的发生,如ServletContext的初始化和撤销、使用初始化参数查找名建立数据库连接、吧数据库连接存储为一个属性,使得web应用的各个部分可以访问等。

 

2. 监听器分类及用途

接口

监听内容

ServletContextListener

监听ServletContext对象的初始化和撤销

ServletContextAttributeListener

监听对ServletContext属性的操作,比如增加、删除、修改

HttpSessionListener

监听Session对象

HttpSessionActivationListener

监听HTTP会话的active和passivate情况,passivate是指非活动的session被写入持久设备(比如硬盘),active相反。

 HttpSessionAttributeListener

监听Session中的属性操作

ServletRequestListener

监听Request对象

ServletRequestAttributeListener

监听Requset中的属性操作

 

3. DIY一个监听器

教程来源《Head first Servlet and JSP》,不得不说这是一本令人上瘾的书。第一次正式阅读Haed first系列,只能说这波不亏!
首先,创建一个实力对象Dog
package com.example;public class Dog {private String breed;//构造函数public Dog(String breed) {super();this.breed = breed;}public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}}
然后,创建自己的监听器,需要实现ServletContextListener接口,用户监听ServletContext对象的创建以及撤销操作
package com.example;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void contextInitialized(ServletContextEvent event) {// TODO Auto-generated method stub//由事件得到ServletContextServletContext sc = event.getServletContext();//使用上下文得到初始化参数String dogBreed = sc.getInitParameter("breed");//new一个Dog出来Dog d = new Dog(dogBreed);//使用上下文设置属性sc.setAttribute("dog", d);}}


建立测试类
package com.example;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void contextInitialized(ServletContextEvent event) {// TODO Auto-generated method stub//由事件得到ServletContextServletContext sc = event.getServletContext();//使用上下文得到初始化参数String dogBreed = sc.getInitParameter("breed");//new一个Dog出来Dog d = new Dog(dogBreed);//使用上下文设置属性sc.setAttribute("dog", d);}}


部署web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">    <!-- 配置servlet -->  <servlet>  <servlet-name>ListenerTester</servlet-name>  <servlet-class>com.example.ListenerTester</servlet-class>  </servlet>    <!-- 配置servlet映射 -->  <servlet-mapping>  <servlet-name>ListenerTester</servlet-name>  <url-pattern>/ListenerTest.do</url-pattern>  </servlet-mapping>    <!-- 配置上下文初始化参数 -->  <context-param>  <param-name>breed</param-name>  <param-value>Great Dane</param-value>  </context-param>    <!-- 配置监听器 -->  <listener>  <listener-class>com.example.MyServletListener</listener-class>  </listener></web-app>


0 0
原创粉丝点击