SpringBoot Filter过滤器和Interceptor拦截器

本文详细介绍了SpringBoot中Filter过滤器和Interceptor拦截器的使用,包括它们的前言、请求过程、主要代码实现及两者之间的区别。在Filter部分,讨论了过滤器的作用,如处理敏感信息、防止XSS等,并提供了JAVA config配置示例。Interceptor部分则阐述了其在SpringWebMVC中的角色,主要方法以及与Filter的不同,强调了执行顺序和生命周期。同时,通过源码分析加深了对它们工作原理的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Filter过滤器

前言

问:我们为什么要使用过滤器?
答:在web请求过程,过滤一些敏感词汇、验证Header请求头、防止XSS、SQL注入,能快速返回信息

问:过滤器是什么?
答:Filter是Servlet的一个组件在 请求到达 Servlet 之前,被一个或多个Filter处理。

请求过程

Filter执行过程

具体代码

自定义Filter

package com.nijo.example.web.filter;

import javax.servlet.*;
import javax.servlet.FilterConfig;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Objects;

/**
 * 自定义Filter过滤器
 * 可以用作请求前 信息头验证(没有token、或自定义头)、拦截xss、SQL注入
 * 这里提供2中方式注入 1.@webFilter() + @ServletComponentScan
 * 2.Bean java config模式
 */
public class CustomFilter implements Filter {
   

    /**
     * 项目启动时候值会运行一次
     * 可以用作当前数据初始化
     * eg init add  List<string>
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
        System.out.println("CustomFilter 初始化init()");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
        //可以做信息头的检测、xss检测、sql注入、记录请求
        System.out.println("start check RequestHeard.....");
        String token = ((HttpServletRequest) servletRequest).getHeader("token");
        if(Objects.isNull(token)||"".equals(token)){
   
            //参数有误 转发请求到参数合法直接返回
            servletRequest.getRequestDispatcher("/parameterException").forward(servletRequest,servletResponse);
        }
       else {
   
            //符合条件 请求目标方法
filterChain.doFilter(servletRequest,servletResponse);
        }
        System.out.println("返回response 过滤参数");
    }

    /**
     * 项目停止会调用该方法
     * */
    @Override
    public void destroy() {
   
        System.out.println("CustomFilter 销毁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值