例1、基本的监听实例。
第一步、编写监听类.
package cn.itcast.listener;
import *;
/**
* servletContext对象上下文的监听
* @author Administrator
*
*/
public class MyServletContextListener implements ServletContextListener {
/**
* 当servletContext对象被创建时调用
*/
public void contextInitialized(ServletContextEvent sce) {
System.out.println("servletContext对象被创建 contextInitialized()");
//map中放置系统共有的信息
Map map=new HashMap();
map.put("mary", "xxxxxxxxxxxx");
ServletContext sc=sce.getServletContext();
System.out.println("sc "+sc);
sc.setAttribute("map", map);
}
/**
* 当servletContext对象销毁时调用
*/
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("servletContext对象销毁 contextDestroyed() ");
}
}
第二步、在web.xml中注册监听器
……
<listener>
<listener-class>cn.itcast.listener.MyServletContextListener</listener-class>
</listener>
……
第三步、编写测试servlet. TestSrvlet.java
package cn.itcast.web;
import *;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//获取上下文
ServletContext sc = this.getServletContext();
System.out.println("servlet中的sc "+sc);
Map map = (Map)sc.getAttribute("map");
System.out.println(map.get("mary"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception {
doGet(request, response);
}
}
第四步、运行,观察结果:启动tomcat并在IE中键入:
http://localhost:8080/day18ServletListener/servlet/TestServlet
……
servletContext对象被创建 contextInitialized()
sc org.apache.catalina.core.ApplicationContextFacade@1735f84
……
信息: Server startup in 1851 ms
servlet中的sc org.apache.catalina.core.ApplicationContextFacade@1735f84
xxxxxxxxxxxx
重启服务器,可以看到:
……
servletContext对象销毁 contextDestroyed()
……
2012-10-24 19:22:44 org.apache.catalina.core.StandardContext addApplicationListener
信息: The listener “com.sun.faces.application.WebappLifecycleListener” is already configured for this context. The duplicate definition has been ignored.
servletContext对象被创建 contextInitialized()
sc org.apache.catalina.core.ApplicationContextFacade@f7ce53
例2、ServletSessionListener监听
第一步、编写监听类 MyHttpSessionListener.java
package cn.itcast.listener;
import *;
/**
* HttpSessionListener接口用于监听HttpSession对象的创建和销毁
*/
public class MyHttpSessionListener implements HttpSessionListener {
/**
* 创建一个Session时
*/
public void sessionCreated(HttpSessionEvent se) {
System.out.println("创建一个Session时 sessionCreated ");
/*
* Map map=new HashMap();
map.put("mary", "xxxxxxxxxxxx");
ServletContext sc=sce.getServletContext();
System.out.println("sc "+sc);
sc.setAttribute("map", map);
*/
//获取ServletContext对象
ServletContext sc = se.getSession().getServletContext();
Map map=(Map)sc.getAttribute("map");
System.out.println("HttpSessionListener "+map.get("mary"));
}
/**
* 销毁一个Session时
*/
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁一个Session时 sessionDestroyed");
}
}
第二步、在web.xml文件中注册监听器
……
<listener>
<listener-class>cn.itcast.listener.MyServletContextListener</listener-class>
</listener>
<listener>
<listener-class>cn.itcast.listener.MyHttpSessionListener</listener-class>
</listener>
……
第三步、session.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'session.jsp' starting page</title>
</head>
<%
//session.setMaxInactiveInterval(3);3秒后消亡
System.out.println("创建一个Session时 sessionCreated ");
%>
<body>
This is my JSP page. <br>
</body>
</html>
第四步、执行结果:
1、启动tomcat
……
servletContext对象被创建 contextInitialized()
sc org.apache.catalina.core.ApplicationContextFacade@10948cf
……
信息: Server startup in 1561 ms
2、在IE中键入:
http://localhost:8080/day18ServletListener/session.jsp 执行结果:
创建