Java体系知识之监听器&数据库连接池
(1)监听器使用
(2)数据库连接池使用
1 监听器
1.1 技术简介
(1)JavaWeb三大组件:
Servlet | Filter | Listener
Servlet:动态网页编程技术
Filter和Listener:高级特性,辅助Servlet工作,让web程序增色
Filter:过滤请求资源 req resp
Listener:监听域对象相关的内容
(2)Servlet三个域对象:
request:HttpServletRequest 请求对象 一次请求一次响应 转发
session:HttpSession 会话对象 多次请求
context:ServletContext 服务器对象|全局对象
(3)Listener:
监听域对象的创建和销毁
request:ServletRequestListener
session:HttpSessionListener
context:ServletContextListener
1.2 使用步骤
(1)Servlet:
创建一个类,继承HttpServlet类;
重写方法;
配置:
web.xml;
注解;@WebServlet("/xx")
(2)Filter:
创建一个类,实现Filter接口;
重写方法;
配置:
web.xml;
注解;@WebFilter("/xx")
(3)Listener:
创建一个类,实现对应接口;
重写方法;
配置:
web.xml;
注解;@WebListener
1.3 案例实现
1.3.1 HttpSessionListenerDemo
package com.javasm.listener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.HashMap;
import java.util.Map;
public class HttpSessionListenerDemo implements HttpSessionListener {
Map<String, HttpSession> online = new HashMap<>();
@Override
public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
String sessionId = session.getId();
online.put(sessionId, session);
System.out.println("有用户上线了:" + sessionId);
System.out.println("目前用户在线情况:" + online);
session.setMaxInactiveInterval(5);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
String sessionId = session.getId();
online.remove(sessionId);
System.out.println("有用户下线了:" + sessionId);
System.out.println("目前用户在线情况:" + online);
}
}
1.3.2 ServletContextListenerDemo
package com.javasm.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletContextListenerDemo implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("服务器启动时,触发该方法执行");
System.out.println("加载第三方资源")