spring boot拦截器与过滤器
标签:
SpringBoot
过滤器
拦截器
对比
过滤器Filter
过滤器基于servlet
fileter类
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.doFilter(servletRequest,servletResponse);
System.out.println("Filter1: Execute cost="+(System.currentTimeMillis()-start));
}
@Override
public void destroy() {
}
}配置方式
通过文件配置方式
@Configurationpublic 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 {//在主类上添加@ServletComponentScan("com.liu.spring_boot_mybatis.filter")//注意最后不要加.*这里就是扫描包public class App {结果
启动项目 刷新网页
控制台输出
拦截器Intercepter
Intercepter类
public class LogCostInterceptor implements HandlerInterceptor { long start = System.currentTimeMillis(); @Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
start = System.currentTimeMillis(); return true;
} @Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("Interceptor cost="+(System.currentTimeMillis()-start));
} @Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}代码说明
preHandle是请求执行前执行的,postHandler是请求结束执行的,但只有preHandle方法返回true的时候才会执行,afterCompletion是视图渲染完成后才执行,同样需要preHandle返回true,该方法通常用于清理资源等工作。
配置方式
@Configurationpublic class InterceptorConfig extends WebMvcConfigurerAdapter { @Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogCostInterceptor()).addPathPatterns("/**"); super.addInterceptors(registry);
}
}
作者:cccccttttyyy
链接:https://www.jianshu.com/p/7c126f00a749
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
