过滤器与拦截器的爱恨情仇
先说一下吧,希望看到这篇文字的时候,你是后端实习生!我是干了这么多年才发现,过滤器和拦截器有相似之处还有偌大的异处,实在是惭愧惭愧,此时已狠狠睡了一觉泪流一地啊!
常用的框架Spring+Struts+Hibernate、SpringMVC+MyBatis,当然还有其他的,现在我只说这两个,我也只接触这两个。
来自Struts2拦截器,英文:interceptor,他真的类似于Filter。拦截器本身是一种AOP面向切面的编程思想,所以这和SpringAOP是同一种编程思想而已,在功能上也就是类似的。基于Struts拦截的需要继承ActionSupport并在struts.xml中配置一下。并且struts2中内置了一些拦截器,当然也可以继承AbstractIntercepter自定义拦截器。
Spring里也是有拦截器的,网上好多人说SpringAOP模块实现拦截,到也没错,只不过Spring里的拦截分:方法前拦截器(MethodBeforeAdvise接口)、返回后拦截器(AfterReturningAdvise接口)、异常捕获拦截器(ThrowAdvise接口)并且在需要时候,在ApplicationContext.xml里配置即可。
过滤器,英文:Filter,是Servlet的属性,他是要配置在web.xml中的,通过</filter>,</filter-mapping>,里面还有<url-pattern/> 等等。
那spring的过滤器呢?不严谨的说spring有过滤器,因为spring整合了servlet,实际上用的还是servlet的过滤器。也就是说,无论SSH或SSM都可以在web.xml里配置<filter>过滤器。常常听到的struts的过滤器,其实也是需要在web.xml中配置的还是使用<filter>实现。
拦截器和过滤器的最大不同则在于:
使用范围的不同(Filter只能用于Web程序另者均可)/阻拦规则不同(Servlet规则另者Spring框架支持)/阻止资源不同(Spring管理一切组件可以灵活拦截配置注入,前者不行)/阻止程度不同(前者只能事前,而Intecepter任何时机)
所以说使用SSH/SSM可以只有这3种方式实行拦截
1:使用<filter>
2:使用webwork的interceptor,
3:将action(controller)交给spring管理,并使用spring的Aop机制
而在Spring框架等MVC框架支持下,注入异常拦截,验证拦截相关的注解,BaseController,自定义注解,设置切点/面也最终回归到上述3种方法。
他们的爱恨情仇我知道的就这些,实际上他们的事而可不止这些,欢迎大家爆料~
相关推荐
过滤器和拦截器是两种在Java Web开发中用于处理请求的机制,它们在功能上有相似之处,但在实现方式和使用场景上存在显著区别。这里我们将深入探讨这两种技术,以及它们在Spring MVC框架中的应用。 首先,拦截器是...
### 拦截器与过滤器的区别 #### 一、概念简介 在现代软件开发过程中,特别是Web应用程序中,为了实现灵活高效的业务逻辑处理及控制流管理,常常会使用到两种设计模式:拦截器(Interceptor)与过滤器(Filter)。...
本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...
浅谈基于过滤器与拦截器的用户访问控制,stuts2中拦截器和过滤器的应用
**过滤器与拦截器的区别** 1. **层次不同**:过滤器是Servlet规范的一部分,属于容器级别;拦截器是框架级别的,依赖于特定的Web框架。 2. **调用顺序**:过滤器的执行顺序由`<filter-mapping>`在web.xml中的顺序...
### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...
本文将深入探讨Struts框架中的拦截器(Interceptor)以及它与过滤器(Filter)的区别,并结合文件上传功能进行讲解。 1. 拦截器与过滤器的概念 - **拦截器**:在Struts2框架中,拦截器是基于AOP(面向切面编程)的...
过滤器和拦截器的区别 过滤器和拦截器是两个常见的概念在 Java Web 开发中,它们都可以用来对请求进行处理和过滤,但是它们之间有着本质的区别。 首先,从机制上来说,拦截器是基于 Java 的反射机制的,而过滤器是...
Filter过滤器与Interceptor拦截器有很多相似
在Java Web开发中,Spring MVC框架提供了两种机制来处理请求:拦截器(Interceptor)和过滤器(Filter)。它们都是在请求被控制器处理之前和之后执行的一系列预处理和后处理操作,但它们在功能、使用场景和工作原理...
在Struts2中,过滤器(Filter)和拦截器(Interceptor)是实现业务逻辑控制和增强功能的重要机制。下面将详细阐述这两个概念以及它们在实际项目中的应用。 首先,过滤器在Servlet容器中扮演着预处理请求和后处理...
Struts2 中拦截器与过滤器的区别及执行顺序 Struts2 中的拦截器(Interceptor)和过滤器(Filter)是两个不同的概念,虽然它们都可以影响请求的处理过程,但它们的作用域、执行顺序和实现机制都有所不同。 拦截器...
在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它主要用于拦截和处理HTTP请求与响应。在标题“过滤器拦截并处理request请求”中,我们关注的是如何使用Servlet Filter来对客户端发送的HTTP请求进行操作...
**设计模式 - 拦截过滤器** 在软件开发中,设计模式是一种被广泛接受的解决方案,用于解决常见的设计问题。拦截过滤器模式是其中的一种行为设计模式,它在请求处理之前或之后执行一系列操作,提供了灵活且可扩展的...
在Java的Web开发中,过滤器(Filter)和拦截器(Interceptor)是两种常见的处理请求和响应的技术,它们都在Web应用程序中起到了中间件的作用。在Spring Boot应用中,这两种技术被广泛使用,以实现诸如权限控制、日志...
在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...
综上所述,"拦截器过滤器.rar"这个压缩包文件是一个关于如何在Web应用中实施拦截器和过滤器的学习资源,涵盖了拦截器与过滤器的基本概念、用法以及可能的问题处理。通过学习和实践这些示例,你可以提升自己在处理...