11Servlet_Listener 监听器

监听器的分类:

1、ServletContextListener和ServletContextAttributeListener(作用域:全局)

2、HttpsessionListener和HttpsessionAttributeListener(作用域:当前会话)

3、ServletRequestListener和ServletRequestAttributeListener(作用域:请求)


1、ServletContextListener和ServletContextAttributeListener(作用域:全局)

监听器

package com.tao.listener;

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

public class ServletContextListenerTest implements ServletContextListener {

	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("contextDestroyed................");
	}

	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("contextInitialized................");
	}

}


package com.tao.listener;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;

public class ServletRequestAttributeListenerTest implements
		ServletRequestAttributeListener {

	public void attributeAdded(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeAdded...................");
	}

	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeRemoved...................");
	}

	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeReplaced...................");
	}
}


servlet测试:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		ServletContext cxt=this.getServletContext();
		cxt.setAttribute("age", "18");
		cxt.setAttribute("age", "20");
		cxt.removeAttribute("age");

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println("test servletContextListener");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}



2、HttpsessionListener和HttpsessionAttributeListener(作用域:当前会话)

监听器

package com.tao.listener;

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

public class HttpSessionListenerTest implements HttpSessionListener {

	public void sessionCreated(HttpSessionEvent se) {
		System.out.println("sessionCreated...............");
	}

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


package com.tao.listener;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class HttpSessionAttributeListenerTest implements
		HttpSessionAttributeListener {

	public void attributeAdded(HttpSessionBindingEvent se) {
		// TODO Auto-generated method stub
		System.out.println("attributeAdded.................");
	}

	public void attributeRemoved(HttpSessionBindingEvent se) {
		// TODO Auto-generated method stub
		System.out.println("attributeRemoved.................");
	}

	public void attributeReplaced(HttpSessionBindingEvent se) {
		// TODO Auto-generated method stub
		System.out.println("attributeReplaced.................");
	}
}

servlet测试:

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.setAttribute("name", "tom");
		session.setAttribute("name", "BigTom");
		session.removeAttribute("name");
		session.invalidate();

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		// out.println("Test HttpSessionListener!");
		out.println("Test HttpSessionAttributeListener!");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}


3、ServletRequestListener和ServletRequestAttributeListener(作用域:请求)

监听器

package com.tao.listener;

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

public class ServletRequestListenerTest implements ServletRequestListener {

	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		System.out.println("requestDestroyed...............");
	}

	public void requestInitialized(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		System.out.println("requestInitialized...............");
	}
}

package com.tao.listener;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;

public class ServletRequestAttributeListenerTest implements
		ServletRequestAttributeListener {

	public void attributeAdded(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeAdded...................");
	}

	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeRemoved...................");
	}

	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("attributeReplaced...................");
	}
}
servlet测试:

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setAttribute("name", "hello");
		request.setAttribute("name", "hello2");
		request.removeAttribute("name");

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		// out.println("Test ServletRequestListener!");
		out.println("Test ServletRequestAttributeListener!");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}


监听器可以用于网站登录用户的计数,以下代码简单实现:(session的创建和取消)

package com.tao.listenerCounter;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class UserCounter implements HttpSessionListener, ServletContextListener {
	private int counter = 0;
	private ServletContext cxt;

	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		cxt = null;

	}

	public void contextInitialized(ServletContextEvent e) {
		// TODO Auto-generated method stub
		cxt = e.getServletContext();

	}

	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		counter++;
		cxt.setAttribute("users", new Integer(counter));

	}

	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		counter--;
		cxt.setAttribute("users", new Integer(counter));
	}

}


users.java
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		HttpSession session = request.getSession();
		ServletContext cxt = this.getServletContext();
		int counter = Integer.parseInt(cxt.getAttribute("users").toString());

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println("users=" + counter);
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值