JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)_第1页
JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)_第2页
JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)_第3页
JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)_第4页
JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaWeb过滤器(Filter)面试题及详细答案(实战完整版)前言:本题库基于企业Java后端、JavaWeb岗位真实面试高频题整理,覆盖Filter基础概念、执行原理、生命周期、实战场景、常见问题及底层源码逻辑,答案贴合面试口述风格,摒弃理论化空话,适配初、中级开发面试。一、基础概念面试题1.什么是Filter过滤器?它的核心作用是什么?参考答案:Filter是JavaWeb三大组件之一,属于Servlet规范的核心组件,运行在服务端,能够对浏览器发起的请求、服务器响应的资源进行拦截过滤。它的核心作用是统一拦截处理Web请求和响应,将多个Servlet重复的通用逻辑抽离出来,实现代码解耦、统一管控。日常开发中主要用于乱码处理、登录权限校验、URL拦截、资源放行、响应头统一设置、请求日志记录等通用场景。2.Filter、Servlet、Listener三者的区别和使用场景?参考答案:三者均为JavaWeb核心组件,运行时机和职责完全不同:1.Servlet:核心处理业务请求,接收请求、处理业务、返回响应,是真正执行业务逻辑的组件,一次请求对应一个Servlet处理。2.Filter过滤器:位于Servlet之前,负责拦截请求和响应,不处理具体业务,只做预处理、校验、增强,多个Filter可以形成拦截链。3.Listener监听器:基于事件驱动,监听Web容器的创建、销毁、属性变更等事件,无需请求触发,常用于项目初始化、全局参数配置、在线人数统计等场景。3.Filter的使用优势是什么?为什么不直接在Servlet中写通用逻辑?参考答案:如果将编码、权限、日志等通用逻辑写在每个Servlet中,会出现大量重复代码,后期维护、修改、扩展都非常麻烦。使用Filter的核心优势有三点:1.解耦复用:通用逻辑统一抽取,所有请求共享一套处理规则,无需重复编码;2.统一管控:全局请求统一拦截处理,规则统一,不会出现个别接口遗漏的情况;3.无侵入性:无需修改业务Servlet代码,即可实现功能增强,符合开闭原则。二、原理与生命周期面试题4.简述Filter的生命周期及对应方法?参考答案:Filter生命周期分为三个阶段,由Tomcat容器全权管理,无需手动调用:1.初始化阶段(项目启动时执行):执行init()方法,仅执行一次。主要用于加载配置参数、初始化资源,比如读取拦截路径、初始化编码格式。2.拦截执行阶段(每次请求匹配路径都会执行):执行doFilter()方法,是核心方法。请求进来先执行该方法内请求预处理逻辑,调用放行方法后,执行后续资源,响应返回后执行响应后处理逻辑。3.销毁阶段(项目关闭/容器销毁时执行):执行destroy()方法,仅执行一次。主要用于释放占用的资源,关闭连接、清空缓存等。5.doFilter方法中chain.doFilter(request,response)的作用是什么?如果不写会出现什么问题?参考答案:这行代码的核心作用是请求放行,将当前请求传递给拦截链中的下一个Filter,如果没有下一个过滤器,就传递给目标Servlet/静态资源。如果不写这行代码,请求会被拦截终止,不会进入后续业务资源,浏览器页面会出现空白、请求超时、无响应的情况,属于Filter开发中最常见的错误。6.多个Filter的执行顺序是什么?如何自定义拦截顺序?参考答案:1.执行顺序规则:请求阶段按照过滤器配置顺序从上到下执行,响应阶段按照配置顺序从下到上执行,遵循“先进后出”原则。2.顺序配置方式:-注解方式:通过@WebFilter(filterName="",dispatcherTypes={})无法精准控制顺序,优先级较低;-配置文件方式(web.xml):严格按照xml中filter-mapping的配置顺序执行,是企业开发精准控制拦截顺序的主流方式。7.Filter的拦截匹配规则有哪些?常用的拦截路径写法?参考答案:Filter支持四种拦截匹配规则,日常开发常用两种:1.精确匹配:指定具体路径,如/login,只拦截该单一接口;2.通配符匹配:/*拦截项目所有请求,/admin/*拦截admin下所有子接口;3.后缀匹配:如*.do、*.action,拦截指定后缀的请求;4.前缀+后缀组合匹配,企业极少使用。注意:Filter无法拦截指定单个Servlet名称,只能通过路径匹配实现拦截。三、实战场景面试题(高频)8.如何用Filter解决Web项目中文乱码问题?核心代码思路?参考答案:Web乱码主要分为POST请求乱码、GET请求乱码、响应输出乱码,Filter可统一全局处理:1.全局设置请求编码为UTF-8,解决POST乱码;2.设置响应输出编码及页面解析编码,解决返回数据乱码;3.GET请求乱码需单独处理,通过自定义请求包装类重写getParameter方法解码。核心逻辑:在doFilter放行前统一设置编码格式,无需每个接口单独配置,全局统一生效。9.如何实现Filter登录权限拦截?如何放行静态资源和登录接口?参考答案:这是Filter最核心的实战场景,整体逻辑如下:1.获取当前请求的URI路径;2.判断当前路径是否为放行资源:登录接口、注册接口、css、js、图片等静态资源,直接放行;3.非放行资源,校验session中是否存在登录用户信息;4.已登录则放行请求,未登录则重定向到登录页面,拦截本次请求。关键细节:必须放行静态资源,否则登录页面样式、脚本失效,页面加载异常。10.Filter拦截器和SpringMVC的Interceptor拦截器有什么区别?(超高频)参考答案:两者核心功能都是拦截请求,但底层层级、生效范围、使用场景完全不同:1.底层层级不同Filter是JavaWeb原生组件,基于Servlet规范,运行在Spring容器之外,优先级最高;Interceptor是SpringMVC框架组件,基于Spring容器,仅对SpringMVC的Controller请求生效。2.拦截范围不同Filter拦截所有Web请求,包括静态资源、JSP、Servlet、第三方接口;Interceptor只拦截Controller接口请求,不拦截静态资源。3.执行顺序不同请求流程:浏览器请求→Filter→SpringMVC前置拦截器→Controller→后置拦截器→Filter响应返回。4.使用场景区分Filter适合全局通用底层处理:乱码、跨域、全局日志、资源过滤;Interceptor适合业务层拦截:接口权限校验、登录校验、接口日志统计、业务参数校验。11.如何用Filter解决项目跨域问题?参考答案:通过Filter统一设置响应头,允许跨域请求访问,无需每个接口单独配置:1.设置Access-Control-Allow-Origin允许访问的域名;2.设置Access-Control-Allow-Methods允许的请求方式(GET、POST、PUT、DELETE);3.设置Access-Control-Allow-Headers允许的请求头;4.对OPTIONS预检请求直接放行,避免跨域拦截报错。该方式适用于所有Web项目,兼容性强,是传统项目跨域解决方案的首选。四、进阶易错面试题12.Filter是单例还是多例?存在什么线程安全问题?参考答案:Filter是单例模式,项目启动时仅创建一个实例,全程复用。因为单例共享,多个并发请求会同时执行同一个Filter的doFilter方法,不能在Filter中定义成员变量,否则会出现线程安全问题,导致数据错乱、参数覆盖。局部变量、请求域、会话域数据是线程独立的,不存在安全问题。13.Filter能不能拦截JSP、HTML、静态图片?为什么?参考答案:可以拦截。Filter基于Servlet底层拦截,属于Web容器最顶层拦截组件,只要配置了/*拦截路径,所有请求包括JSP、HTML、CSS、JS、图片、视频等静态资源,以及所有动态接口都会被拦截。而SpringMVC拦截器仅拦截控制器请求,无法拦截静态资源,这是两者最大的区别之一。14.Filter中forward跳转和redirect重定向的区别?会触发再次拦截吗?参考答案:1.服务器内部转发(forward):一次请求,地址栏不变,不会重新触发Filter拦截;2.客户端重定向(redirect):两次请求,地址栏改变,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论