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>
posted @ 2022-05-21 12:01  fao99  阅读(16)  评论(0)    收藏  举报