释放双眼,带上耳机,听听看~!
概述
通过监听器对象,来监听域对象的创建和销毁
监听器对象——先于三个域对象之前创建的,优先于servletContext对象创建之前创建
域对象
- ServletContext域对象:在服务器启动时创建,在服务器关闭时销毁。
-
session对象:一次会话对应一个session对象,在会话开始时session对象被创建。销毁session对象的三种方式:
- 超过了默认过期时间,session对象被销毁
- 默认过期时间,可以通过修改tomcat服务器conf目录下的web.x服务器关闭,session对象被销毁
- 调用invalidate方法销毁session对象
- request域对象:每次发送请求,都会创建request对象,请求结束request对象会被销毁
测试过程
监听器
package p01_listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyListener implements ServletContextListener, HttpSessionListener, ServletRequestListener {
public MyListener() {
System.out.println("监听对象被创建");
}
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("session对象被创建");
}
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("request对象被销毁");
}
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("request对象被创建");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("session被销毁");
}
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("contextevent被销毁");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("context对象被创建");
}
}
访问测试页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
测试页面被打开
<a href="session_out.jsp">销毁session</a>
</body>
</html>
session销毁页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%session.invalidate(); %>
</body>
</html>