javaee学习之路(七)Servlet监听器

本文详细介绍了JavaEE中Servlet监听器的使用,包括ServletContextListener、HttpSessionListener、ServletRequestListener以及各种属性变更监听器的实例。通过这些监听器,可以实现对Servlet上下文、HttpSession、请求以及域对象属性变化的监听,例如在线人数统计等功能。
摘要由CSDN通过智能技术生成

例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 执行结果:
创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值