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 @   晨度  阅读(42)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2020-06-19 NoSuchMethodError错误
点击右上角即可分享
微信分享提示