监听器的配置
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象创建");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象销毁");
}
}
//web.xml文件中注册监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<description>ServletContextListener监听器</description>
<listener-class>me.gacl.web.listener.MyServletContextListener</listener-class>
</listener>
</web-app>
RequestLinstener
public class ServletRquestListeners implements ServletRequestListener,ServletRequestAttributeListener
{
public void requestDestroyed(ServletRequestEvent s)
{
System.out.println("销毁了ServletReqeust");
}
public void requestInitialized(ServletRequestEvent s)
{
ServletRequest servletRequest = s.getServletRequest();
HttpServletRequest request = (HttpServletRequest) servletRequest;
String pathInfo = request.getServletPath();
System.out.println("请求地址:"+pathInfo);
}
public void attributeAdded(ServletRequestAttributeEvent srae)
{
HttpServletRequest request = (HttpServletRequest) srae.getServletRequest();
System.out.println("增加request--->"+request.getAttribute("requestName"));
}
public void attributeRemoved(ServletRequestAttributeEvent srae)
{
HttpServletRequest request = (HttpServletRequest) srae.getServletRequest();
System.out.println("删除request--->"+request.getAttribute("requestName"));
}
public void attributeReplaced(ServletRequestAttributeEvent srae)
{
HttpServletRequest request = (HttpServletRequest) srae.getServletRequest();
System.out.println("提换request--->"+request.getAttribute("requestName"));
}
}
SessionLinstener
package test.listener;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class onlineListener implements HttpSessionListener,
HttpSessionAttributeListener {
ServletContext sc;
ArrayList list = new ArrayList();
public void sessionCreated(HttpSessionEvent se) {
sc = se.getSession().getServletContext();
System.out.println("新建一个session");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁一个session");
if (!list.isEmpty()) {
list.remove((String) se.getSession().getAttribute("userName"));
sc.setAttribute("list", list);
}
}
public void attributeAdded(HttpSessionBindingEvent sbe) {
list.add((String) sbe.getValue());
System.out.println(sbe.getValue());
sc.setAttribute("list", list);
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("5555555");
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("77777777");
}
}
//web.xml配置监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<listener>
<listener-class>
test.listener.onlineListener
</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>
//index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath()
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"
%>
<html>
<body>
<%
session = request.getSession(false)
if (session != null)
session.invalidate()
%>
<form action="isOnline.jsp" method="post">
用户名:
<input type="text" name="uName" />
<input type="submit" value="上线">
</body>
</html>
//isOnline.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath()
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"
%>
<html>
<body>
<%
session=request.getSession()
session.setAttribute("userName",request.getParameter("uName"))
response.sendRedirect("showOnline.jsp")
%>
</body>
</html>
ServlerContextLinstener
package webtest.listener;
import java.text.MessageFormat;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements
ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域对象中添加了属性:{0},属性值是:{1}"
,scab.getName()
,scab.getValue());
System.out.println(str);
}
@Override
public void attributeRemoved(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域对象中删除属性:{0},属性值是:{1}"
,scab.getName()
,scab.getValue());
System.out.println(str);
}
@Override
public void attributeReplaced(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域对象中替换了属性:{0}的值"
,scab.getName());
System.out.println(str);
}
}
<listener>
<listener-class>webtest.listener.MyServletContextAttributeListener</listener-class>
</listener>
//Test.jsp测试页面
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<body>
<%
//往application域对象中添加属性
application.setAttribute("name", "51gjie");
//替换application域对象中name属性的值
application.setAttribute("name", "51gjie.com");
//移除application域对象中name属性
application.removeAttribute("name");
%>
</body>
</html>