监听器-listener
监听器是什么
- 监听器是J2EE Servlet模块下的组件
- Listener 的作用对Web应用对象的行为进行监控
- 通过Listener监听自动触发指定的功能代码
监听对象
- ServletContext - 对全局ServletContext及其属性进行监听
- HttpSession - 对用户会话及其属性操作进行监听
- ServletRequest - 对请求及其属性操作进行监听
监听器 与 过滤器的区别
- 过滤器 Filter 的职责是对 URL 进行过滤拦截,进行处理,是一个主动的执行事件
- 监听器 Listener 的职责是对 Web对象 进行监听,是被动触发的事件
监听接口
接口 | 说明 |
---|---|
ServletContextListener | 监听ServletContext对象的创建、销毁等操作 |
HttpSessionListener | 监听HttpSession对象的创建、销毁等操作 |
ServletRequestListener | 监听HttpServletRequest对象的创建、销毁等操作 |
ServletContextAttributeListener | 监听全局属性操作 |
HttpSessionAttributeListener | 监听用户会话属性操作 |
ServletRequestAttributeListener | 监听请求属性操作 |
静态数据预加载
html显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach items="${applicationScope.channelList }" var="c">
<a href="${c.url }">${c.name}</a> |
</c:forEach>
<hr>
</body>
</html>
javaBean 类
package com.listener;
public class Channel {
private String name;
private String url;
public Channel(String name, String url) {
super();
this.name = name;
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
listener类
package com.listener;
import java.util.List;
import java.util.ArrayList;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class StaticDataListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
List list =new ArrayList();
list.add(new Channel("频道一","http://www.channel.com/1"));
list.add(new Channel("频道二","http://www.channel.com/2"));
list.add(new Channel("频道三","http://www.channel.com/3"));
sce.getServletContext().setAttribute("channelList", list);
}
}