学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法

Posted isDaHua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法相关的知识,希望对你有一定的参考价值。

2023-01-21

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

1、过滤器(Filter)属于web服务器组件

(1)过滤器主要作用:过滤Servlet请求

(2)执行时机:两处执行时机(Servlet前、Servlet后)

2、拦截器(Interceptor)属于框架(springMVC)

(1)拦截器主要作用:拦截Controller请求

(2)执行时机:三处执行时机

①执行DispatcherServlet之后,Controller之前

②执行Controller之后,DispatcherServlet之前

③执行DispatcherServlet之后

二、拦截器概述

1、SpringMVC可以使用拦截器实现拦截Controller请求,用户可以自定义拦截器来实现特定功能

2、实现拦截器两种方式

(1)实现接口:HandlerInterceptor

(2)继承适配器类:HandlerInterceptorAdapter

3、拦截器中三个方法

(1)preHandler():这个方法在业务处理器处理请求之前被调用,可以在此方法中做一些权限的校验。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他组件去处理请求,则返回false.

(2)postHandler():这个方法在业务处理器处理请求之后,渲染视图之前调用。在此方法中可以对ModelAndView中的模型和视图进行处理。

(3)afterCompletion():这个方法在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。

三、实现拦截器步骤

1、实现接口:HandlerInterceptor

2、重写三个方法

@Component
public class MyInterceptor implements HandlerInterceptor 

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception 
        System.out.println(" MyInterceptor==>preHandle " );
        return true;
    

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception 
        System.out.println(" MyInterceptor==>postHandle " );
    

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception 
        System.out.println(" MyInterceptor==>afterCompletion " );

    

3、在springmvc.xml配置文件中,装配拦截器

<!--    装配拦截器-->
    <mvc:interceptors>
        <ref bean="myInterceptor"></ref>
    </mvc:interceptors>

 

以上是关于学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法的主要内容,如果未能解决你的问题,请参考以下文章

过滤器与拦截器之间的关系与区别

Java过滤器与SpringMVC拦截器之间的关系与区别。

Java过滤器与SpringMVC拦截器之间的关系与区别

SpringMVC拦截器的简单使用

SpringMVC拦截器的简单使用

SpringMVC的拦截器和过滤器的区别与联系