SpringBoot——SpringBoot中使用过滤器Filter的两种方式

简介: SpringBoot——SpringBoot中使用过滤器Filter的两种方式

1.方式一(使用注解)


首先,我们写一个Filter。要求就是简单的打印一句话。

在MyFilter这个类的上方使用 @WebFilter 注解来创建Filter即可。


package com.songzihao.springboot.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
 *
 */
@WebFilter(urlPatterns = "/myfilter")
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("======您已进入过滤器======");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}


之后在SpringBoot项目的入口类上方使用注解 @ServletComponentScan 注解来扫描filter包中的注解即可。

package com.songzihao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.songzihao.springboot.filter")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


最后启动测试。



2.方式二(定义配置类)


仍然是先写一个 Filter。这次不使用注解。


package com.songzihao.springboot.filter;
import javax.servlet.*;
import java.io.IOException;
/**
 *
 */
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("======您已进入过滤器======");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}


之后写一个控制层controller。

package com.songzihao.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 *
 */
@Controller
public class UserController {
    @RequestMapping(value = "/user/detail")
    public @ResponseBody String userDetail() {
        return "/user/detail";
    }
    @RequestMapping(value = "/center")
    public @ResponseBody String center() {
        return "center";
    }
}


然后再写一个配置类!!!

package com.songzihao.springboot.config;
import com.songzihao.springboot.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 *
 */
@Configuration //定义此类为配置类
public class FilterConfig {
    @Bean
    public FilterRegistrationBean myFilterRegistrationBean() {
        //注册过滤器
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(new MyFilter());
        //添加过滤路径
        filterRegistrationBean.addUrlPatterns("/user/*");
        return filterRegistrationBean;
    }
}


最后启动测试。

 

相关文章
|
2月前
|
Java Spring 容器
【二十二】springboot整合拦截器实战并对比过滤器
【二十二】springboot整合拦截器实战并对比过滤器
51 0
|
2月前
|
Java 数据库
SpringBoot中如何在过滤器中取get的参数值
SpringBoot中如何在过滤器中取get的参数值
81 0
|
2月前
|
JSON 缓存 Java
Springboot 之 Filter 实现超大响应 JSON 数据压缩
Springboot 之 Filter 实现超大响应 JSON 数据压缩
65 0
|
11天前
|
Java API 数据安全/隐私保护
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
27 6
|
3天前
|
安全 Java 机器人
Spring Boot中的自定义过滤器
Spring Boot中的自定义过滤器
|
2月前
|
安全 Java 开发者
[AIGC] Spring Filter 过滤器详解
[AIGC] Spring Filter 过滤器详解
|
2月前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
32 0
|
10月前
|
JSON 安全 Java
Spring Boot中的安全过滤器及使用方法
Spring Boot中的安全过滤器及使用方法
|
2月前
|
存储 前端开发 NoSQL
【二十一】springboot整合过滤器实战
【二十一】springboot整合过滤器实战
26 0
|
2月前
|
存储 JSON NoSQL
Springboot 之 Filter 实现 Gzip 压缩超大 json 对象
Springboot 之 Filter 实现 Gzip 压缩超大 json 对象
52 0