Servlet 监听

第一步 写Servlet 监听

 1、对ServletContext


package com.dxf.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/*
 * ServletContextListener
 * 
 * 当ServletContext 创建或者被销毁的时候触发响应的方法
 * 
 * 意味着应用的 创建或者被销毁
 * 
 * 
 */

public class FirstListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent servletContextEvent) {

		System.out.println("contextDestroyed : " + servletContextEvent.getSource().toString());

	}

	@Override
	public void contextInitialized(ServletContextEvent servletContextEvent) {

		System.out.println("contextInitialized : " + servletContextEvent.getSource().toString());

	}

}

package com.dxf.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

/*
 * ServletContextAttributeListener
 * 
 * 当 application 应用程序在运行时 对 application 对象的  属性进行增加、修改、删除的时候
 * 
 *  触发相应的方法
 * 
 * */

public class SecondeListener implements ServletContextAttributeListener {

	// 当动态的给application添加属性的时候触发此方法
	public void attributeAdded(ServletContextAttributeEvent arg0) {

		System.out.println("ServletContext attributeAdded " + arg0.getName() + "-->" + arg0.getValue());

	}

	// 当application 的属性遭到删除的时候触发
	public void attributeRemoved(ServletContextAttributeEvent arg0) {

		System.out.println("ServletContext attributeRemoved " + arg0.getName() + "  --> " + arg0.getValue());

	}

	// 当application的 键值对被修改的时候触发此方法
	public void attributeReplaced(ServletContextAttributeEvent arg0) {

		System.out.println("ServletContext  attributeReplaced" + arg0.getName() + " --> " + arg0.getValue());

	}

}

2、对Session 的监听

package com.dxf.listener;

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

/*
 * 与session 生命周期相关的监听器
 * 
 * 
 * 
 * */

public class ThirdListener implements HttpSessionListener {

	// 创建一个新的session的时候会触发此方法
	public void sessionCreated(HttpSessionEvent httpSessionEvent) {

		System.out.println("sessionCreated :" + httpSessionEvent.getSession().getCreationTime());

	}

	// 销毁一个session的时候会触发此方法
	public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {

		System.out.println("sessionDestroyed :" + httpSessionEvent.getSession().getLastAccessedTime());

	}

}


package com.dxf.listener;

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

/* 对 HttpSession
 * 的属性进行添加、删除、修改的时候触发相应的方法 
 * 
 * 
 * */

public class ForthLisener implements HttpSessionAttributeListener {

	// 当 给某个session 添加属性的时候触发此方法
	public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {

		String name = httpSessionBindingEvent.getName();

		String value = (String) httpSessionBindingEvent.getValue();

		System.out.println("Session attributeAdded :" + name + "-->" + value);

	}

	// 当删除某个属性值得时候触发此方法
	public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {

		String name = httpSessionBindingEvent.getName();
		String value = (String) httpSessionBindingEvent.getValue();

		System.out.println("attributeRemoved :" + name + "--->" + value);

	}

	// 当修改属性指的时候触发此方法
	public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {

		String name = httpSessionBindingEvent.getName();

		String value = (String) httpSessionBindingEvent.getValue();

		System.out.println("session attributeReplaced:" + name + "-->" + value);

	}

}


3、对Request的监听

package com.dxf.listener;

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

/*
 * ServletRequestListener
 * 
 * 一个请求的生命周期,监听的对象为一个请求
 * 
 * 1、当一个请求被初始化的时候
 * 2、当一个请求被销毁的时候
 * 
 * 
 * */
public class FifthListener implements ServletRequestListener {
	// 当一个请求被销毁的时候,触发此方法
	public void requestDestroyed(ServletRequestEvent servletRequestEvent) {

		System.out.println("requestDestroyed.....");

	}

	// 当一个请求被初始化的时候.触发此方法
	@Override
	public void requestInitialized(ServletRequestEvent servletRequestEvent) {

		System.out.println("requestInitialized...");

	}

}

package com.dxf.listener;

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

/*
 * ServletRequestAttributeListener
 * 
 * 监听的对象为request的属性
 * 
 * 当request 中的属性被添加、修改、删除的时候触发响应的方法
 * 
 * 
 * 
 * */

public class SixthListener implements ServletRequestAttributeListener {

	// 当添加属性的时候触发此方法
	public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {

		String name = servletRequestAttributeEvent.getName();

		String value = (String) servletRequestAttributeEvent.getValue();

		System.out.println("request attributeAdded :" + name + "-->" + value);

	}

	// 当属性值被修改的时候会触发此方法
	public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {

		String name = servletRequestAttributeEvent.getName();
		String value = (String) servletRequestAttributeEvent.getValue();

		System.out.println("request  attributeRemoved:" + name + "--->" + value);

	}

	// 当属性被修改的时候触发此方法
	public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {

		String name = servletRequestAttributeEvent.getName();

		Object value = servletRequestAttributeEvent.getValue();
		System.out.println("request attributeReplaced: " + name + "--->" + value);

	}

}


第二步:编写测试Listener的Servlet

package com.dxf.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class TestListener extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		ServletContext context = request.getServletContext();

		// 对 ServletContext 属性进行增加、修改、删除

		context.setAttribute("ServletcontextName", "ServletcontextValue1");

		context.setAttribute("ServletcontextName", "ServletcontextValue2");

		System.out.println("修改后  " + context.getAttribute("ServletcontextName"));

		context.removeAttribute("ServletcontextName");

		// 对Session 属性进行增加、修改、删除

		HttpSession session = request.getSession();

		session.setAttribute("sessionAttributeName", "sessionAttributeValue1");

		session.setAttribute("sessionAttributeName", "sessionAttributeValue2");

		System.out.println("修改后  " + session.getAttribute("sessionAttributeName"));
		session.removeAttribute("sessionAttributeName");

		// 对request 属性进行增加、修改、删除

		request.setAttribute("requestAttributeName", "requestAttributeValue1");
		request.setAttribute("requestAttributeName", "requestAttributeValue2");

		System.out.println("修改后  " + request.getAttribute("requestAttributeName"));
		request.removeAttribute("requestAttributeName");

		PrintWriter pw = response.getWriter();

		pw.write("Listener success!!!");

		pw.flush();

		pw.close();

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}

第三步:配置Lietener 和Servlet


<?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">
	<display-name>Servlet</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>


	<!-- 配置监听器 -->
	<!-- 配置关与ServletContext的监听器 -->

	<listener>
		<listener-class>com.dxf.listener.FirstListener</listener-class>
	</listener>

	<listener>
		<listener-class>com.dxf.listener.SecondeListener</listener-class>
	</listener>

	<!-- 配置关于ServletSession的监听器 -->

	<listener>
		<listener-class>com.dxf.listener.ThirdListener</listener-class>
	</listener>
	<listener>
		<listener-class>com.dxf.listener.ForthLisener</listener-class>
	</listener>

	<!-- 配置关于 ServletRequest的监听器 -->
	<listener>
		<listener-class>com.dxf.listener.FifthListener</listener-class>
	</listener>

	<listener>
		<listener-class>com.dxf.listener.SixthListener</listener-class>
	</listener>




	<!-- 配置全局变量 -->
	<context-param>
		<param-name>Context</param-name>
		<param-value>ContextValue</param-value>
	</context-param>


	<servlet>
		<servlet-name>Listener</servlet-name>
		<servlet-class>com.dxf.servlet.TestListener</servlet-class>

	</servlet>


	<servlet-mapping>
		<servlet-name>Listener</servlet-name>
		<url-pattern>/listener</url-pattern>
	</servlet-mapping>

</web-app>


第四步:写一个简单的超链接

<a href="listener"><h1>listener</h1></a>

第五步:启动服务器



点击Listener超链接


猜你喜欢

转载自blog.csdn.net/qq_26837711/article/details/53401659