SpringBoot过滤器、拦截器配置
2020-06-03 05:00
302 查看
过滤器配置
创建过滤器
public class LogCostFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { long start = System.currentTimeMillis(); //filterChain后面执行逻辑代码,即后面的业务代码 filterChain.doFilter(servletRequest,servletResponse); //业务代码执行完后,再走下一步流程 System.out.println("Execute cost="+(System.currentTimeMillis()-start)); } @Override public void destroy() { } }
创建过滤器配置类
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); //将自己创建的过滤器注入进来 registration.setFilter(new LogCostFilter()); //配置过滤的请求 registration.addUrlPatterns("/*"); registration.setName("LogCostFilter"); registration.setOrder(1); return registration; } }
通过注解配置过滤器
@WebFilter(urlPatterns = "/*", filterName = "logFilter2") public class LogCostFilter2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { long start = System.currentTimeMillis(); filterChain.doFilter(servletRequest, servletResponse); System.out.println("LogFilter2 Execute cost=" + (System.currentTimeMillis() - start)); } @Override public void destroy() { } }
这里直接用@WebFilter就可以进行配置,同样,可以设置url匹配模式,过滤器名称等。这里需要注意一点的是@WebFilter这个注解是Servlet3.0的规范,并不是Spring boot提供的。除了这个注解以外,我们还需在配置类中加另外一个注解:@ServletComponetScan,指定扫描的包。
在启动类中添加注解
@SpringBootApplication @MapperScan("com.pandy.blog.dao") //扫描过滤器类 @ServletComponentScan("com.pandy.blog.filters") public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
拦截器配置
创建拦截器
//添加此注解,才能够把拦截器通过@Autowired注入到webmvc配置中 @Component public class LoginHandlerInterceptor implements HandlerInterceptor { //目标方法执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("currentUser"); if (user == null) { //未登录,返回登录页面 response.sendRedirect("/LoginError.html"); //此时要返回false代码才能够同行 return false; }else { //放行 return true; } //这里还可以执行给当前session添加属性 //例:request.getSession().setAttribute("session","sd"); //那么在业务代码中,也可以通过session.getAttribute("session");拿到值 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { } }
注册拦截器
@Configuration public class MyMvcConfig implements WebMvcConfigurer { //所有的WebMvcConfigurerAdapter组件都会一起起作用 @Bean //将组件注册在容器中 public WebMvcConfigurer webMvcConfigurerAdapter(){ return new WebMvcConfigurer(){ //注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { //静态资源; *.css,*.js //SpringBoot已经做好了静态资源映射 // registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**") // .excludePathPatterns("/index.html","/","/user/login","/static/**","/webjars/**"); // /** 表示拦截所有路径下的所有请求 registry.addInterceptor(new LoginHandlerInterceptor()) .addPathPatterns("/person.html","/Person.html", "/questionnaire.html","/Questionnaire.html", "/result.html","/Result.html"); } }; } }
- addInterceptor:把刚才创建的拦截器加入到registry中
- addPathPatterns:用户加入所要拦截的url,/**表示拦截所有请求
- excludePathPatterns:添加不需要拦截的请求。
- 如果需要配置多个拦截,只需要另外创建一个拦截器,给registry再加一个inteceptor就可以了,不用再创建一个新的config配置类。
相关文章推荐
- springboot配置监听器、过滤器和拦截器
- springboot配置过滤器、拦截器、监听器
- springboot配置:拦截器,监听器,过滤器.
- spring boot之过滤器配置(十五)
- springboot(五)过滤器和拦截器
- 【SpringBoot】过滤器(filter)和拦截器(interceptor)区别
- Spring Boot配置统一跨域过滤器
- Spring+SpringMVC+Mybatis 纯注解配置(包含过滤器,拦截器,事务处理...)
- springboot 拦截器配置
- springboot过滤器和拦截器的实现和区别
- Spring Boot 优雅的配置拦截器方式
- Spring Boot (九):过滤器、拦截器、监听器
- spring 4000 boot自定义监听器(listener),过滤器(filter),拦截器(interceptor)。即执行时机、顺序。
- SpringBoot系列<八>过滤器filter和监听器listener配置
- spring boot实现过滤器和拦截器demo
- springboot 配置使用拦截器 interceptor
- Spring Boot 优雅的配置拦截器方式
- SpringBoot 2.X配置登录拦截器
- springboot 引入第三方jar包中拦截器配置
- 关于springboot配置拦截器失效的解决