精华内容
下载资源
问答
  • 本文通过代码分析和文字说明的方式给大家浅析JAVA中过滤器、监听器、拦截器区别,感兴趣的朋友一起看下吧
  • 今天小编就为大家分享一篇详谈springboot过滤器拦截器的实现及区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本文详细介绍了使用过滤器拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了过滤器拦截器的 6个区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了SpringBoot实现拦截器过滤器、监听器过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 问题来源 在做找房微服务的时候,一般只有登录的用户能够预约房源操作,或者修改资料等密码操作,管理员也需要登录的情况下才能对房源进行管理上架、添加等操作。 假如我们没一个方法都分别对其权限鉴定,用户判断...
  • java-web servlet 拦截器 过滤器使用 java-web servlet 拦截器 过滤器使用
  • 过滤器拦截器区别

    千次阅读 2020-11-08 19:33:47
    一、拦截器过滤器区别 1、拦截器(Interceptor)只对action请求起作用 即对外访问路径 而过滤器(Filter)则可以对几乎所有的请求都能起作用 包括css js等资源文件 2、拦截器(Interceptor)是在Servlet和Controller...

    一、拦截器和过滤器的区别
    1、拦截器(Interceptor)只对action请求起作用 即对外访问路径
    而过滤器(Filter)则可以对几乎所有的请求都能起作用 包括css js等资源文件
    2、拦截器(Interceptor)是在Servlet和Controller控制器之间执行
    而过滤器(Filter)是在请求进入Tomcat容器之后 但是在请求进入Servlet之前执行

    web.xml加载顺序:context- param -> listener -> filter -> servlet
    

    在请求结束返回时也是一样 是在Servlet处理完之后返回给前端之间执行
    在这里插入图片描述
    二、拦截器和过滤器的代码实现
    1、拦截器
    首先需要一个拦截器类 并且这个类要实现HandlerInterceptor接口
    这个接口里面有三个方法:

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {
        // 在拦截点(Controller方法处理之前)执行拦截 若返回的是false则中断执行 反之亦然
        return false;
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
    {
        // 在处理过程中(Controller方法处理完之后  DispatcherServlet进行视图的渲染之前)执行拦截
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
    {
        // 在DispatcherServlet进行视图的渲染后 返回前进行拦截
    }
    

    稍微写一下方法:

    1 @Override
     2 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
     3 {
     4     // 在Controller方法处理之前执行拦截 若返回的是false则中断执行 反之亦然
     5 
     6     // 判断当前的User是否为空 若不为空则不拦截
     7     if (request.getSession().getAttribute("USERINFO")!=null)
     8     {
     9         return true;
    10     }
    11     // 进行拦截 返回登录界面
    12     response.sendRedirect(request.getContextPath()+"/user/doLogin.do");
    13     return false;
    14 }
    

    然后需要去SpringMVC的配置文件中配置拦截器:

     1 <!-- 配置拦截器 -->
     2 <mvc:interceptors>
     3     <mvc:interceptor>
     4         <!-- 拦截所有的mvc控制器(Controller) -->
     5         <mvc:mapping path="/**"/>
     6         <!-- 放行机制 指定对某个页面不进行拦截 -->
     7         <!-- 拦截器只对action起作用 因此填入的不是页面路径 而是方法 -->
     8         <mvc:exclude-mapping path="/user/doLogin.do"/>
     9         <!-- 指定使用哪个拦截器 -->
    10         <bean class="net.zjitc.interceptor.LoginInterceptor"/>
    11     </mvc:interceptor>
    12 </mvc:interceptors>
    

    如此 当访问的请求不为/user/doLogin.do会被拦截然后重定向到/user/doLogin.do
    但是访问其它的页面不会被拦截
    想要让页面也被拦截?你需要过滤器!

    2、过滤器
    同理 需要一个过滤器类 然后实现javax.servlet.Filter接口
    注意Filter的路径别导错了 因为有很多同名接口

     1 public class LoginFilter implements Filter {
     2 
     3     @Override
     4     public void init(FilterConfig filterConfig) throws ServletException
     5     {
     6         // 过滤器初始化
     7     }
     8 
     9     @Override
    10     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
    11     {
    12 
    13     }
    14 
    15     @Override
    16     public void destroy()
    17     {
    18         // 过滤器销毁
    19     }
    20 }
    

    稍微写一下方法:

    1 @Override
     2 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
     3 {
     4     // ServletRequest是一个接口 而HttpServletRequest是接口的实现
     5     // 但有些方法是HttpServletRequest独有的 例如getSession()
     6     // HttpServletRequest接口继承自ServletRequest接口 增加了和Http相关的方法
     7     // 但是我们可以强制转换
     8     HttpServletRequest request=(HttpServletRequest)servletRequest;
     9     HttpServletResponse response=(HttpServletResponse)servletResponse;
    10 
    11     // 若用户没有登录
    12     if (request.getSession().getAttribute("USERINFO")==null && request.getRequestURI().indexOf("/user/doLogin.do")==-1)
    13     {
    14         response.sendRedirect(request.getContextPath()+"/user/doLogin.do");
    15     }
    16     // 若用户已经登录 则继续下一个请求(继续访问)
    17     filterChain.doFilter(request,response);
    18 }
    

    然后需去web.xml中配置过滤器:

    1 <!-- 配置自定义的Filter 实现登录控制 -->
     2 <filter>
     3     <filter-name>sessionFilter</filter-name>
     4     <filter-class>net.zjitc.filter.LoginFilter</filter-class>
     5 </filter>
     6 <filter-mapping>
     7     <filter-name>sessionFilter</filter-name>
     8     <!-- 拦截所有的页面 /斜杠代表在webapp目录下 -->
     9     <url-pattern>/pages/*</url-pattern>
    10     <url-pattern>/css/*</url-pattern>
    11     <url-pattern>/img/*</url-pattern>
    12     <url-pattern>/failer.jsp</url-pattern>
    13 </filter-mapping>
    

    三、总结
    拦截器和过滤器其实都是AOP编程思想的实现
    都可以体现例如权限的检查 日志的记录等功能
    但是有不同之处:
    1、使用范围不同
    拦截器既可以用在web层 又可以用在Application和Swing程序中
    而filter是Servlet规范规定的 只能用于web程序中
    2、规范不同
    拦截器是在Spring容器内的 是Spring框架支持的
    而filter是Servlet规范规定的 是Servlet容器支持的

    =============================================================================================================================================================

    1、什么是Filter及其作用介绍
    (1)概念
    Servlet规范中三个技术 Servlet Listener Filter(顺序为L F S)
    Filter是sun公司中servlet2.3后增加的一个新功能,在javaEE中定义了一个接口 javax.servlet.Filter来描述过滤器

    (2)作用
    通过Filter可以拦截访问web资源的请求与响应操作.
    WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

    (3)举例
    在java web中,针对传入的request,或response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符。

    2、Filter API介绍
    Filter是javax.servlet包下的一个接口主要有以下三个方法

    destory()
    doFilter(ServletRequest request,ServletResponse response,FilterCjain chain)
    init(FilterConfig filterConfig)
    3、Filter链与Filter生命周期
    (1)Filter链介绍
    多个Filter对同一个资源进行了拦截,那么当我们在开始的Filter中执行chain.doFilter(request,response)时,是访问下一下Filter,直到最后一个Filter执行时,它后面没有了Filter,才会访问web资源。

    (2)关于多个FIlter的访问顺序问题
    如果有多个Filter形成了Filter链,那么它们的执行顺序是怎样确定的?
    它们的执行顺序取决于在web.xml文件中配置的先后顺序。

    (3)Filter生命周期
    当服务器启动,会创建Filter对象,并调用init方法,只调用一次.
    当访问资源,路径与Filter的拦截路径匹配,会执行Filter中的doFilter方法,
    这个方法是真正拦截操作的方法.
    当服务器关闭时,会调用Filter的destroy方法来进行销毁操作
    过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。

    二、拦截器
    拦截器是spring容器的,是spring支持的

    java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

    在面向切面编程AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截,然后在之前或之后加入某些操作。

    比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

    三、过滤器和拦截器的区别
    ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
    ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
    ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
    ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
    ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
    ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。拦截器可以获取ioc中的service bean实现业务逻辑。

    (功课)回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

    (功课)Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action

    在这里插入图片描述

    展开全文
  • 主要介绍了通过实例解析java过滤器拦截器区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...
  • 主要介绍了Spring Boot使用过滤器拦截器分别实现REST接口简易安全认证示例代码,通过开发实践,理解过滤器拦截器的工作原理,需要的朋友可以参考下
  • 主要介绍了Java中的拦截器过滤器、监听器用法,详细分析了Java拦截器过滤器、监听器的功能、使用方法及相关注意事项,需要的朋友可以参考下
  • 过滤器拦截器,监听的区别和作用,确切的说在什么情况下用哪种技术供大家学习。
  • 1、深入SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter实战(核心知识) 简介:讲解SpringBoot里面Filter讲解和使用Servlet3.0配置自定义Filter实战 filter简单理解:人--->检票员(filter)--->...

    1、深入SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter实战(核心知识)
        简介:讲解SpringBoot里面Filter讲解和使用Servlet3.0配置自定义Filter实战
            
            filter简单理解:人--->检票员(filter)---> 景点

            1、SpringBoot启动默认加载的Filter
                characterEncodingFilter
                hiddenHttpMethodFilter
                httpPutFormContentFilter
                requestContextFilter
                    
            2、Filter优先级

                Ordered.HIGHEST_PRECEDENCE
                Ordered.LOWEST_PRECEDENCE

                低位值意味着更高的优先级 Higher values are interpreted as lower priority
                自定义Filter,避免和默认的Filter优先级一样,不然会冲突

                注册Filter的bean FilterRegistrationBean
                同模块里面有相关默认Filter
                    web->servlet->filter


            3、自定义Filter
                1)使用Servlet3.0的注解进行配置
                2)启动类里面增加 @ServletComponentScan,进行扫描
                3)新建一个Filter类,implements Filter,并实现对应的接口
                4) @WebFilter 标记一个类为filter,被spring进行扫描
                    urlPatterns:拦截规则,支持正则

                6)控制chain.doFilter的方法的调用,来实现是否通过放行
                   不放行,web应用resp.sendRedirect("/index.html");
                    场景:权限控制、用户登录(非前端后端分离场景)等
                

            1、官网地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners

     


    2、Servlet3.0的注解自定义原生Servlet实战
        讲解:使用 Servlet3.0的注解自定义原生Servlet和Listener
            1、自定义原生Servlet

                @WebServlet(name = "userServlet",urlPatterns = "/test/customs")
                public class UserServlet extends HttpServlet{

                     @Override
                     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                         resp.getWriter().print("custom sevlet");
                         resp.getWriter().flush();
                         resp.getWriter().close();
                     }

                     @Override
                     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                         this.doGet(req, resp);
                     }
                }

     

     

    3、Servlet3.0的注解自定义原生Listener监听器实战
            简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战

            1、自定义Listener(常用的监听器 servletContextListener、httpSessionListener、servletRequestListener)
                @WebListener
                public class RequestListener implements ServletRequestListener {

                @Override
                public void requestDestroyed(ServletRequestEvent sre) {
                    // TODO Auto-generated method stub
                    System.out.println("======requestDestroyed========");
                }

                @Override
                public void requestInitialized(ServletRequestEvent sre) {
                    System.out.println("======requestInitialized========");
                    
                }

     

     


    4、SpringBoot2.X自定义拦截器实战及新旧配置对比(核心知识)
        简介: 讲解拦截器使用,Spingboot2.x新版本配置拦截拦截器和旧版本SpringBoot配置拦截器区别讲解
        
        1、@Configuration
            继承WebMvcConfigurationAdapter(SpringBoot2.X之前旧版本)

            SpringBoot2.X 新版本配置拦截器 implements WebMvcConfigurer

        2、自定义拦截器 HandlerInterceptor
            preHandle:调用Controller某个方法之前
            postHandle:Controller之后调用,视图渲染之前,如果控制器Controller出现了异常,则不会执行此方法
            afterCompletion:不管有没有异常,这个afterCompletion都会被调用,用于资源清理
        
        3、按照注册顺序进行拦截,先注册,先被拦截

        拦截器不生效常见问题:
            1)是否有加@Configuration
            2)拦截路径是否有问题 **  和 *
            3)拦截器最后路径一定要 “/**”, 如果是目录的话则是 /*/

        Filter
            是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
            Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等

            依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。
        
            在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
            
            Filter和Interceptor的执行顺序
             
            过滤前->拦截前->action执行->拦截后->过滤后

    展开全文
  • 拦截器过滤器区别

    万次阅读 多人点赞 2019-06-20 23:11:09
    文章目录一、二者理解过滤器(Filter)拦截器(Interceptor)二、拦截器过滤器区别区别:三、拦截器过滤器的触发时机拦截器过滤器触发时机不一样四、使用场景五、图解 一、二者理解 过滤器(Filter) 过滤器...

    一、二者理解

    过滤器(Filter)

    过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。

    拦截器(Interceptor)

    拦截器,是面向切面编程(AOP,Aspect Oriented Program)的。就是在你的Service或者一个方法前调用一个方法,或者在方法后调用一个方法。比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

    通俗理解:
    (1)过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。(理解:就是一堆字母中取一个B)
    (2)拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。(理解:就是一堆字母中,干预它,通过验证的少点,顺便干点别的东西)

    二、拦截器与过滤器的区别

    区别:

    ①:拦截器是基于java的反射机制的,而过滤器是基于函数的回调。
    ②:拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
    ③:拦截器只对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
    ④:拦截器可以访问action上下文、值、栈里面的对象,而过滤器不可以。
    ⑤:在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
    ⑥:拦截器可以获取IOC容器中的各个bean,而过滤器不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

    三、拦截器与过滤器的触发时机

    拦截器与过滤器触发时机不一样

    过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。

    过滤器包裹servlet,servlet包裹住拦截器

    四、使用场景

    SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

    1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。
    2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;
    3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);
    4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。
    5、OpenSessionInView:如hibernate,在进入处理器打开Session,在完成后关闭Session。

    五、图解

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 拦截器过滤器区别,从实现原理到应用场景各处区别
  • 该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明
  • spring boot 过滤器拦截器区别与使用

    万次阅读 多人点赞 2018-04-18 19:27:31
    拦截器过滤器区别: 1、过滤器拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 如下图: 2、拦截器...

    拦截器与过滤器的区别:

    拦截器与过滤器的区别

    1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
    如下图:
    这里写图片描述
    2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。

    过滤器拦截器运行先后步骤:
    这里写图片描述
    其中第2步,SpringMVC的机制是由DispaterServlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的.

    3、过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,代理分静态代理和动态代理,动态代理是拦截器的简单实现。

    何时使用拦截器?何时使用过滤器?

    • 如果是非spring项目,那么拦截器不能用,只能使用过滤器。
    • 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
    • 如果是处理dispaterServlet前后,只能使用过滤器。

    spring boot 使用过滤器

    两种方式:
    1、使用spring boot提供的FilterRegistrationBean注册Filter
    2、使用原生servlet注解定义Filter
    两种方式的本质都是一样的,都是去FilterRegistrationBean注册自定义Filter

    方式一:
    ①、先定义Filter:

    package com.hwm.filter;
    
    import javax.servlet.*;
    import java.io.IOException;
    
    public class MyFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            // do something 处理request 或response
            System.out.println("filter1");
            // 调用filter链中的下一个filter
            filterChain.doFilter(servletRequest,servletResponse);
        }
        @Override
        public void destroy() {
    
        }
    }

    ②、注册自定义Filter

    @Configuration
    public class FilterConfig {
    
        @Bean
        public FilterRegistrationBean registrationBean() {
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
            filterRegistrationBean.addUrlPatterns("/*");
            return filterRegistrationBean;
        }
    }

    方式二:

    // 注入spring容器
    @Component
    // 定义filterName 和过滤的url
    @WebFilter(filterName = "my2Filter" ,urlPatterns = "/*")
    public class My2Filter 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("filter2");
        }
        @Override
        public void destroy() {
    
        }
    }

    Spring boot拦截器的使用:

    ①、定义拦截器:

    public class MyInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("preHandle");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
            System.out.println("postHandle");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
            System.out.println("afterCompletion");
        }
    }
    

    ②、配置拦截器:

    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new MyInterceptor());
        }
    }

    ③Controller演示:

    @RestController
    public class UController {
    
        @GetMapping("/home")
        public String home(){
            System.out.println("home");
            return "myhome";
        }## 标题 ##
    }

    输出:
    preHandle
    home
    postHandle
    afterCompletion

    展开全文
  • 过滤器拦截器的 6个区别,别再傻傻分不清了

    千次阅读 多人点赞 2020-06-04 10:01:39
    本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步 周末有个小伙伴加我微信,向我请教了一个问题:老哥,过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊? 听到题目我的第一感觉就是:简单! ...
  • Zuul作为网关服务,是其他各服务对外中转站,通过Zuul进行请求转发。这篇文章主要介绍了详解SpringCloud Zuul过滤器返回值拦截,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 本篇文章主要介绍了spring boot实现过滤器拦截器demo ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Spring 过滤器 拦截器 AOP区别

    万次阅读 多人点赞 2018-09-12 14:15:11
    简介 这几天在回顾Spring的AOP时,对过滤器,拦截器,AOP的关系有点好奇,故记录做以备份。...过滤器拦截的是URL Spring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当...
  • 过滤器(Filter)和拦截器(Interceptor)的区别

    万次阅读 多人点赞 2018-05-11 11:57:52
    来自:http://www.cnblogs.com/luoyun/archive/2013/01/04/2844274.html过滤器(Filter)和拦截器(Interceptor)的区别Filter介绍 Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以...
  • NULL 博文链接:https://rd-030.iteye.com/blog/2384106
  • 框架给我们的开发带来很多便利的地方,而许多从前学习到的一些知识的使用,在框架中会稍有不同,该文章主要对过滤器拦截器在框架中的使用进行描述,并分析过滤器拦截器和AOP的关系及区别
  • 拦截器过滤器区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...
  • 过滤器拦截器详解

    万次阅读 多人点赞 2019-02-17 16:51:45
    过滤器详解 依赖于servlet容器,实现基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,过滤器...
  • 1、在SpringBoot中如何实现自定义过滤器(Filter)和拦截器(Interceptor) 2、通过执行案例了解多个过滤器拦截器的执行顺序 【本案例包含源码以及可执行的jar文件,源码文件建议使用IDEA进行导入查看学习,建议使用...
  • 主要介绍了struts2过滤器拦截器区别,简单分析了struts2框架中过滤器拦截器的概念与相关使用区别,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,784
精华内容 48,313
关键字:

过滤器拦截器的区别