网站推广有哪些方法,哪个企业的网站做的比较好,企业网站模板下载哪里,做网站服务器租一年多少钱文章目录 过滤器和拦截器的区别详解1. 来源不同2. 触发时机不同3. 实现原理不同4. 支持的项目类型不同5. 使用场景不同6. 核心区别总结**总结** 过滤器和拦截器的区别详解
在 Web 开发中#xff0c;过滤器#xff08;Filter#xff09; 和 拦截器#xff08;Interceptor过滤器Filter 和 拦截器Interceptor 是两个常见的机制用于处理请求和响应的过程。虽然它们的功能有一定的相似性但在实现原理、触发时机、适用范围等方面存在显著差异。本文将从多个角度详细分析两者的区别。 1. 来源不同
过滤器属于 Servlet 规范的一部分依赖于 Servlet 容器。通过实现 javax.servlet.Filter 接口可以对请求和响应流进行统一管理。它主要服务于 Web 项目。拦截器是 Spring 框架中的组件依赖于 Spring 的核心功能基于动态代理技术实现。它可以不依赖 Servlet 容器因此既可用于 Web 项目也可应用于其他 Java 项目。 2. 触发时机不同
请求的处理流程通常为 客户端请求 → 容器 → 过滤器 → Servlet → 拦截器 → 控制器Controller方法 → 响应
过滤器 在请求进入 Servlet 之前被触发用于对请求和响应进行预处理和后续操作。拦截器 紧随 Servlet 之后执行在请求进入控制器方法前或方法后以及整个请求完成后进行处理。
这种触发顺序使得过滤器更适合处理底层的通用逻辑而拦截器更贴近业务逻辑。 3. 实现原理不同 过滤器 基于函数回调机制通过调用 FilterChain.doFilter() 来控制请求的继续执行。 示例代码如下 WebFilter(urlPatterns /*)
public class TestFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(过滤器初始化);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println(请求进入过滤器);chain.doFilter(request, response);System.out.println(响应通过过滤器);}Overridepublic void destroy() {System.out.println(过滤器销毁);}
}拦截器 基于动态代理实现通过 HandlerInterceptor 接口定义拦截逻辑。拦截器通常需要注册到 Spring 配置中执行流程包括 preHandle请求方法执行前调用通常用于权限验证。postHandle方法执行后调用但在视图渲染之前。afterCompletion整个请求完成后调用用于资源清理等操作。 示例代码 Component
public class TestInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(请求进入拦截器);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(请求处理完成视图渲染前);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(请求完成);}
}4. 支持的项目类型不同
过滤器依赖于 Servlet 容器仅适用于 Web 项目。拦截器属于 Spring 的核心功能既可用于 Web 项目也可在其他 Java 应用中如 Swing 或纯 Java 项目使用。 5. 使用场景不同
由于过滤器和拦截器触发时机和功能上的差异它们的应用场景也有所不同
过滤器的常见场景 设置字符编码如 UTF-8。过滤敏感词。压缩响应内容如 Gzip。日志记录如记录请求 IP 地址、耗时统计等。 拦截器的常见场景 用户身份验证。权限校验。业务日志记录。数据格式转换或预处理。 6. 核心区别总结
特性过滤器Filter拦截器Interceptor来源Servlet 规范Spring 框架触发时机在请求进入 Servlet 前执行在请求到达控制器方法前后或完成后执行实现方式函数回调机制需实现 Filter 接口动态代理机制需实现 HandlerInterceptor 接口适用范围Web 项目Web 项目及其他 Java 项目典型应用场景字符编码设置、数据压缩等通用功能用户认证、权限校验等业务逻辑 总结
过滤器和拦截器虽然都可以对请求进行处理但在实现原理、触发时机、适用范围和使用场景上有显著差异。过滤器更适合底层功能的实现而拦截器更贴近业务需求。开发者可以根据项目需求选择合适的工具充分发挥二者的优势。 博客主页: 总是学不会. 文章转载自: http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.bzgpj.cn.gov.cn.bzgpj.cn http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn http://www.morning.zlff.cn.gov.cn.zlff.cn http://www.morning.krdb.cn.gov.cn.krdb.cn http://www.morning.qdsmile.cn.gov.cn.qdsmile.cn http://www.morning.wwklf.cn.gov.cn.wwklf.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.xmttd.cn.gov.cn.xmttd.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.ryjqh.cn.gov.cn.ryjqh.cn http://www.morning.jghty.cn.gov.cn.jghty.cn http://www.morning.gwsdt.cn.gov.cn.gwsdt.cn http://www.morning.prplf.cn.gov.cn.prplf.cn http://www.morning.mmplj.cn.gov.cn.mmplj.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.prmbb.cn.gov.cn.prmbb.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.jwskq.cn.gov.cn.jwskq.cn http://www.morning.wpqwk.cn.gov.cn.wpqwk.cn http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn http://www.morning.tztgq.cn.gov.cn.tztgq.cn http://www.morning.cbchz.cn.gov.cn.cbchz.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.kfbth.cn.gov.cn.kfbth.cn http://www.morning.srgbr.cn.gov.cn.srgbr.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.ldsgm.cn.gov.cn.ldsgm.cn http://www.morning.rhkq.cn.gov.cn.rhkq.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.bzlfw.cn.gov.cn.bzlfw.cn http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.rbyz.cn.gov.cn.rbyz.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.ltrms.cn.gov.cn.ltrms.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.btlsb.cn.gov.cn.btlsb.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn http://www.morning.nfks.cn.gov.cn.nfks.cn http://www.morning.lfgql.cn.gov.cn.lfgql.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn http://www.morning.rqqn.cn.gov.cn.rqqn.cn http://www.morning.phjny.cn.gov.cn.phjny.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.mgwdp.cn.gov.cn.mgwdp.cn http://www.morning.jsljr.cn.gov.cn.jsljr.cn http://www.morning.lhsdf.cn.gov.cn.lhsdf.cn http://www.morning.alwpc.cn.gov.cn.alwpc.cn http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.npcxk.cn.gov.cn.npcxk.cn http://www.morning.gwwky.cn.gov.cn.gwwky.cn http://www.morning.knzdt.cn.gov.cn.knzdt.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.srrzb.cn.gov.cn.srrzb.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.kpxky.cn.gov.cn.kpxky.cn http://www.morning.sskkf.cn.gov.cn.sskkf.cn http://www.morning.clfct.cn.gov.cn.clfct.cn http://www.morning.jqllx.cn.gov.cn.jqllx.cn http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn