第一种方式:注解方式
第一步:代码如下
@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);
}
}
第二步:代码如下
@SpringBootApplication
@ServletComponentScan(basePackages = "com.example.springbootfilter.filter")//过滤器所在的路径名
public class SpringbootFilterApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootFilterApplication.class, args);
}
}
第二种方式:通过配置类
第一步:代码如下
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);
}
}
第二步:代码如下
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean myFilterRegistrationBean(){
//注册过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
//添加过滤器路径
filterRegistrationBean.addUrlPatterns("/user/*");
return filterRegistrationBean;
}
}
第三步:代码如下
@Controller
public class MyController {
@RequestMapping("/user/login")
public @ResponseBody String hh(){
return "欢迎登录";
}
@RequestMapping("/center")
public @ResponseBody String h(){
return "没走过滤器";
}
}
第四步:代码如下
@SpringBootApplication
public class SpringbootFilter02Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootFilter02Application.class, args);
}
}