通过注解的方式实现filter过滤器。
创建Filter包,并在该包下创建MyFilter
示例代码:
package com.bjpowernode.springboot.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter(urlPatterns = "/*") public class MyFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("您的请求已经进入MyFilter过滤器……"); filterChain.doFilter(servletRequest,servletResponse); } }
注意需要加注解,配置需要拦截哪些路径。过滤的逻辑在输出语句处实现。并且如果不阻断请求,需要让请求过滤链继续。
需要在启动类上加包扫描注解,代码如下:
package com.bjpowernode.springboot; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @MapperScan("com.bjpowernode.springboot.mapper") //取代在mapper接口上配置的@Mapper @ServletComponentScan(basePackages = {"com.bjpowernode.springboot.servlet", "com.bjpowernode.springboot.filter"})//扫描Servlet包 扫描filter包 @EnableTransactionManagement //开启事务支持 public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); } }
注解:@ServletComponentScan是扫描包的。