第一步 写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超链接