9过滤器和监听器
过滤器和监听器
1Filter简介
- Filter:过滤器。用来过滤网站的信息
- 处理中文乱码
- 登录验证...

2Filter开发步骤
- 导包(是javax.servlet)
- 编写过滤器
- 实现Filer接口,重写对应方法即可
- 在web.xml中配置filter就行
//filter
public class Filter1 implements Filter {
//初始化: web服务器启动时就初始化,随时等待过滤器对象的出现
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化成功");
}
//过滤中的所有代码,在过滤器对特定请求的时候都会执行
//要让过滤器继续执行,必须释放链(chain)
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html; charset=UTF-8");
System.out.println("执行前...");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("执行后...");
}
@Override
public void destroy() {
System.out.println("已被销毁");
}
}
<filter>
<filter-name>filter1</filter-name>
<filter-class>com.fao.filter.Filter1</filter-class>
</filter>
<filter-mapping>
<!-- /*会过滤所有的请求 -->
<!-- servlet/*会过滤所有servlet下的所有请求 -->
<filter-name>filter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2监听器
public class Listener1 implements HttpSessionListener {
//创建session监听:看你的一举一动
//一但创建Session就会触发一次这个事件
public void sessionCreated(HttpSessionEvent se){
ServletContext ctx = se.getSession().getServletContext();
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount= new Integer(1);
}else {
int count=onlineCount.intValue();
onlineCount=new Integer(count+1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
//销毁session监听
//一旦销毁session就会触发一次这个事件
public void sessionDestroyed(HttpSessionEvent se){
ServletContext ctx = se.getSession().getServletContext();
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount= new Integer(0);
}else {
int count=onlineCount.intValue();
onlineCount=new Integer(count-1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
}
<!-- 监听器只要一行 -->
<listener>
<listener-class>com.fao.listener.Listener1</listener-class>
</listener>

浙公网安备 33010602011771号