ITPub博客

首页 > IT职业 > IT生活 > 介绍一下拦截器 过滤器 和切片

介绍一下拦截器 过滤器 和切片

IT生活 作者:sprest 时间:2021-09-09 09:19:58 0 删除 编辑
过滤器(Filter)

1.如果你想把一些第三方的过滤器加入到你项目你可以。

  @Bean
    public FilterRegistrationBean timeFilter() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        TimeFilter timeFilter = new TimeFilter();
        List a = new ArrayList();
        //下面表示所有请求都通过   当然你可以选择你想要的
        a.add("/*");
        registrationBean.setFilter(timeFilter);
        registrationBean.setUrlPatterns(a);
        return registrationBean;

2:过滤器的一些缺点。
因为过滤器只是获得请求与相应,所以你只能从请求中获得一些参数。你要是想获得哪个控制器哪个方法处理执行的话,你是无法知道的。filter这个接口是j2ee定义的,而controller是springmvc自己定义的一套规范,所以filter是无法得知哪个控制器哪个方法处理执行的。

拦截器(Interceptor)

拦截器这个东西是spring框架本身提供的。特征就是实现了HandlerInterceptor接口。

 @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       //controller方法在被调用之前  这个方法被调用
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
      //controller方法在被调用之后  这个方法被调用,出异常的话则不被调用
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
     // 不论是否有异常这个都调用
    }

2实现

public class Config extends WebMvcConfigurerAdapter {

    @Autowired
    private timeInterceptor timeInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(timeInterceptor);

    }
3.缺点
你无法拿到传入参数的值。我们可以查看源码DispatcherServlet下的doService方法中的doDispatch方法。里面applyPreHandle(大约963行-971),这个方法是调用我们写的拦截器,而在(967)ha.handle这里才会将请求转换为请求参数。所以拦截器是无法获得请求参数的。
ps:不仅是自己的写的控制器(controller)会被拦截,spring本身的controller也会被拦截
切片(Aspect)

下面我就来讲讲切片这个类了,对没有错 ,切片是一个类。如果你想实现它,那么你需要有两个步骤。
1:切入点(注解)——在那些方法起作用,什么时候起作用
2:增强(方法)——起作用时执行的逻辑
具体预防官网可查

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3088/viewspace-2802280/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-13

  • 博文量
    101
  • 访问量
    821