百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

spring boot过滤器与拦截器的区别

liuian 2025-09-18 03:45 27 浏览

有小伙伴使用spring boot开发多年,但是对于过滤器和拦截器的主要区别依然傻傻分不清。今天就对这两个概念做一个全面的盘点。

定义与作用范围

  • 过滤器(Filter):过滤器是一种可以动态地拦截、处理和响应HTTP请求和响应的对象。它基于Servlet规范,可以拦截所有到达Web应用的请求,包括静态资源(如HTML、CSS、JavaScript文件等)和动态资源(如Servlet、JSP页面等)。过滤器主要用于请求的预处理和响应的后处理,如字符编码处理、URL访问记录等。
  • 拦截器(Interceptor):拦截器是Spring MVC框架中的一部分,它基于Spring框架的AOP(面向切面编程)思想。它主要拦截Controller层的方法调用,不会拦截对静态资源的请求。拦截器主要用于在请求处理的不同阶段(如请求进入控制器方法之前或之后)执行额外的逻辑操作,如权限检查、接口日志记录、异常处理等。

过滤器实例

定义过滤器:实现javax.servlet.Filter接口,并重写doFilter方法。

注册过滤器:通过@WebFilter注解自动注册,或者使用FilterRegistrationBean在Spring配置类中注册。

import org.springframework.stereotype.Component;
 
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
@Component
public class SimpleCORSFilter implements Filter {
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
 
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
 
        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            chain.doFilter(req, res);
        }
    }
 
    @Override
    public void init(FilterConfig filterConfig) {}
 
    @Override
    public void destroy() {}
}

上面代码定义了一的跨域资源共享(CORS)过滤器,用于处理跨域请求。它设置了允许的源、方法和头部,并处理预检请求,这个在开发中经常用到。

拦截器实例

定义拦截器:实现HandlerInterceptor接口,并重写preHandle方法。

@Component  
public class AuthInterceptor implements HandlerInterceptor {  
    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)  
            throws Exception {  
        // 获取用户信息,进行身份验证  
        // ...  
          
        // 如果用户未登录或权限不足,返回false并设置响应状态  
        if (!isUserAuthenticated(request)) {  
            response.setStatus(HttpServletResponse.FORBIDDEN);  
            return false;  
        }  
          
        // 用户已登录且权限足够,放行请求  
        return true;  
    }  
}

注册拦截器:在Spring配置类中注册拦截器,并指定拦截的路径和顺序。

@Configuration  
public class WebConfig implements WebMvcConfigurer {  
    @Autowired  
    private AuthInterceptor authInterceptor;  
      
    @Override  
    public void addInterceptors(InterceptorRegistry registry) {  
        registry.addInterceptor(authInterceptor).addPathPatterns("/**").excludePathPatterns("/login");  
    }  
}

上面代码主要实现一个权限检查拦截器,用于在请求进入控制器方法之前进行身份验证。

总结

作用范围

  • 过滤器拦截所有到达Web应用的请求(包括静态资源和动态资源)
  • 拦截器主要拦截Controller层的方法调用,不拦截静态资源

操作对象

  • 过滤器只能对请求(request)和响应(response)进行操作
  • 拦截器可以对请求(request)、响应(response)、处理器(handler)、模型视图(modelAndView)、异常(exception)等进行


每天一个小知识,每天进步一点点!!!

喜欢这类文章,请关注、点赞、收藏、转发,谢谢!!!

相关推荐

技嘉主板bios设置启动顺序(技嘉主板bios设置启动顺序怎么设置)

启动顺序设置方法如下:1、重启电脑连续按[DEL]键进入BIOS设置,按DEL进入BIOS设置。2、按键盘方向键右键切换到BOOT选项,将windows10功能设置为"其它操作系统"...

目前台式电脑主机怎么选(台式主机选择)
目前台式电脑主机怎么选(台式主机选择)

每个人对电脑的性需要不同,因此根据自己家的家庭需要,选择合适的电脑即可。以下简单说明:1,双核处理器+2G内存+集成显卡+机械硬盘。性能满足上网、看电影、聊天、办公、玩象棋之类的小游戏。价格在2000以内可以买到;2,四核处理器+4G内存+...

2026-01-14 12:05 liuian

台式电脑如何用u盘重装系统(台式电脑如何用u盘重装系统应用)

1、重启电脑并进入BIOS;2、在BIOS中设置启动顺序,优先从U盘启动;3、从U盘启动,进入安装界面;4、选择安装语言、时区和键盘设置;5、选择安装方式,一般选择“清除整个硬盘并安装”;6、配置分区...

宏基笔记本电脑怎么恢复出厂设置
  • 宏基笔记本电脑怎么恢复出厂设置
  • 宏基笔记本电脑怎么恢复出厂设置
  • 宏基笔记本电脑怎么恢复出厂设置
  • 宏基笔记本电脑怎么恢复出厂设置
stop0x0000007b蓝屏(stop0X0000007b蓝屏,修改注册表)
stop0x0000007b蓝屏(stop0X0000007b蓝屏,修改注册表)

步骤/方式1将电脑送到当地的维修店步骤/方式2然后将师傅维修一下蓝屏的问题当电脑启动蓝屏出现错误代码0x0000007b时,首先我们将电脑重启,在开机时不停按启动热键进入到bios设置页面,进入页面后找到“IntegratedPeriphe...

2026-01-14 11:21 liuian

电脑开机安全模式也进不去(电脑开机安全模式也进不去桌面)
  • 电脑开机安全模式也进不去(电脑开机安全模式也进不去桌面)
  • 电脑开机安全模式也进不去(电脑开机安全模式也进不去桌面)
  • 电脑开机安全模式也进不去(电脑开机安全模式也进不去桌面)
  • 电脑开机安全模式也进不去(电脑开机安全模式也进不去桌面)
怎样设置默认打印机(打印机设置彩色打印在哪里设置)

步骤如下:1.单击Windows“开始”菜单,指向“设置”,单击“打印机”,打开“打印机”窗口。2.右键单击打印机图标,系统弹出快速菜单,单击其中的“设为默认值”。如果“打印机”窗口没有当前使用的打印...

机械硬盘坏了能修吗(机械硬盘损坏可以修复吗)

硬盘修复是很多人都可能会面临的难关。硬盘是计算机上最重要的组成部分,是计算机上的数据存储设备,因此一旦硬盘发生故障,用户很可能会丢失所有数据。况且硬盘是机械设备,有一定的使用寿命,长时间使用出现故障...

win7正版怎么下载(我告诉你怎么下载win7)

如题,题主想在红警之家下载红警,很简单,可以用迅雷下载软件下载,下载以后用解压软件解压就行了,但是红警这款软件在winxp系统下,是最理想的,7系统下面会出现闪退的情况。下载很容易的,闪退的时候,设置...

电脑关机脚本bat命令(win10关机bat脚本)

bat关机命令需要使用文本文档。使用文本文档制作bat关机命令步骤如下所示:1、在电脑桌面空白处点击鼠标右键。2、在鼠标右键菜单中,选择新建文本文档。3、点击打开文本文档。4、在新建文本文档中输入关机...

fat32格式是什么意思(u盘fAT32格式是什么意思)

是一种分区格式。这种格式使用32位文件分配表,大大提高了磁盘的管理能力,打破了每个分区只有4GB的FAT16限制。对于使用FAT32文件系统的每个逻辑盘内部空间又可划分为三部分,依次是引导区(BOO...

手机系统更新软件(手机系统更新软件不更新会怎样)
手机系统更新软件(手机系统更新软件不更新会怎样)

第一步:打开苹果手机的设置,点击“通用”选项进入。第二步:选择“软件更新”选项进入第三步:在软件更新界面,如果有新的更新,点击“下载并安装”即可!应用商店里一键更新。在手机软件里,为了更新最新版本可以进软件商店里面找一下,更新点一下,然后它...

2026-01-14 09:37 liuian

联想小新如何重装系统(联想小新重装系统怎么操作)

联想小新重装系统,方法∶在关机状态下,按下电脑的一键恢复按钮(需确保笔记本屏盖在打开状态)。首先找到按键孔,用针对准插孔,捅一下,电脑启动,进入启动选择界面,选择systemrecovery,按回车...

桌面上的文件删除了怎么恢复
  • 桌面上的文件删除了怎么恢复
  • 桌面上的文件删除了怎么恢复
  • 桌面上的文件删除了怎么恢复
  • 桌面上的文件删除了怎么恢复
麦克风没声音(win11麦克风没声音)

一.先确保你的麦克风能正常使用。请确保麦克风本身是好的,连接线没有问题,请确保你的测试软件已正确设置,如YY之类的软件。二.确认你的麦克风是否插入正确的插孔一般麦克风是插入红色插孔中。三.确认你...