Fork me on GitHub

Filter、Listener

Filter(过滤器)

概念:

对请求参数、请求头以及响应参数进行过滤。一般用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤...。

代码:

public class  FilterDemo implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
             //进行初始化一些信息,服务器启动时
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //进行请求的过滤
        System.out.println("filterDemo1被执行了....");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
        
        //对响应内容进行过滤
        System.out.println("filterDemo1被执行了22....");
    }

    @Override
    public void destroy() {
          //进行销毁,服务器正常关闭时
    }
}

过滤器web.xml配置:

<filter>
    <filter-name>demo1</filter-name>
    <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
    <filter-name>demo1</filter-name>
    <!-- 拦截路径 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>
  • 拦截路径配置
    • 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行。
    • 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行。
    • 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行。
    • 拦截所有资源:/* 访问所有资源时,过滤器都会被执行。
  • 注解
    @WebFilter

Listener(监听器)

定义:

由事件、事件源、监听器、注册监听组成事件监听机制。注册监听将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码。

方法(举例一个监听ServletContext对象的创建和销毁):

public class  ServletContextDemo implements ServletContextListener{

  public  void contextInitialized(ServletContextEvent sce) {
      System.out.println("ServletContext初始化时执行该代码");
    }

    public  void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext销毁时执行该代码");
    }

}

监听器web.xml配置:

<listener>
    <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
</listener>
  • 注解
    @WebListener
posted @ 2021-06-19 17:17  晨度  阅读(38)  评论(0编辑  收藏  举报