2024年大数据最全聊聊面试中的过滤器与拦截器_java面试题 拦截器与过滤器,经验分享

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

}

public void doFilter(ServletRequest servletRequest,
        ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    String servletPath = request.getServletPath();
    //获取验证码
    if(servletPath.matches("/captcha.jpg")) {
        response.setContentType("image/jpeg");
        //禁止图像缓存。
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        //参数:宽、高、字符数、干扰量
        CaptchaProductor vCode = new CaptchaProductor(70,30,4,75);

        //根据token保存验证码内容
        CaptchaBean bean = new CaptchaBean();
        bean.setCaptcha(vCode.getCode());
        bean.setCreateTime(new Date());
        HttpSessionUtils.setSessionValue(request, "sessionCaptcha", bean);
        vCode.write(response.getOutputStream());
        return;
    }
}

}



> 
> 过滤器的实现可以通过实现 Filter 接口或者继承 Spring 的`org.springframework.web.filter.OncePerRequestFilter` 来实现。
> 
> 
> 


##### 拦截器 Interceptor


拦截器 Interceptor 不依赖 Servlet 容器,依赖 Spring 等 Web 框架,在 SpringMVC 框架中是配置在SpringMVC 的配置文件中,在 SpringBoot 项目中也可以采用注解的形式实现。拦截器是 AOP 的一种应用,底层采用 Java 的反射机制来实现的。与过滤器一个很大的区别是在拦截器中可以注入 Spring 的 Bean,能够获取到各种需要的 Service 来处理业务逻辑,而过滤器则不行。



<!-- 拦截器 -->
<mvc:interceptors>
    <!-- 多个拦截器,顺序执行 -->
    <bean class="com.test.admin.interceptor.AuthInterceptor"/>
</mvc:interceptors>

##### 参考实现



public class AuthInterceptor extends HandlerInterceptorAdapter {

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    //todo
    super.postHandle(request, response, handler, modelAndView);
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    //todo 
    return super.preHandle(request, response, handler);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

}

}



> 
> 拦截器的实现可以通过继承`org.springframework.web.servlet.handler.HandlerInterceptorAdapter;` 来实现。
> 
> 
> 


#### 执行顺序


因为我们的过滤器和拦截器都可以配置多个,那么关于各自的执行顺序是什么样子的呢?


过滤器的执行顺序首先跟在 web.xml 中配置的顺序有关,先配置的先执行,但是并不是说是等上一个过滤器执行结束了再执行下一个,它们之间是通过链来执行的,具体的过滤器和拦截器的执行过程我画了个图,可以看下。


![图片](https://img-blog.csdnimg.cn/img_convert/f8386154ccd5f6942e6e06e5102cf9a5.jpeg)


小结


今天简单的给大家介绍了过滤器和拦截器的区别和使用,希望对大家有帮忙。平时的工作中可能这些东西都是组长或者架构师搭建好的,自己只关注业务逻辑,但是很多时候我们还是要知其然知其所以然,多了解一些对自己是很有帮助的。


598)]


小结


今天简单的给大家介绍了过滤器和拦截器的区别和使用,希望对大家有帮忙。平时的工作中可能这些东西都是组长或者架构师搭建好的,自己只关注业务逻辑,但是很多时候我们还是要知其然知其所以然,多了解一些对自己是很有帮助的。


**关于过滤器与拦截器,你学废了么?**




---




![img](https://img-blog.csdnimg.cn/img_convert/348914e77aa1b4d548a6e3b65f37d3bb.png)
![img](https://img-blog.csdnimg.cn/img_convert/f4b6b0b98d1c4508c556085e2dff387d.png)
![img](https://img-blog.csdnimg.cn/img_convert/ef2bf2bc7905423de71b35846900bf99.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值