Struts2 关于struts 2拦截器和servlet过滤器的功能

Struts2 关于struts 2拦截器和servlet过滤器的功能,struts2,Struts2,我有一个疑问,因为我最近开始探索struts 2,但请告知,在struts 2中我们有拦截器,在servlet中我们有过滤器,它们也执行相同的任务。那么struts 2中拦截器的需求是什么,两者之间的区别是什么。您以另一种方式理解了这个概念。Struts2使用Filter来截获发送给framework的每个请求 过滤器”是Servlet规范的一部分;换句话说,它们是Servlet API的一部分 拦截器是Struts 2框架的一部分,并且只是Struts 2框架完成的请求处理的一部分。如果您使用

我有一个疑问,因为我最近开始探索struts 2,但请告知,在struts 2中我们有拦截器,在servlet中我们有过滤器,它们也执行相同的任务。那么struts 2中拦截器的需求是什么,两者之间的区别是什么。

您以另一种方式理解了这个概念。Struts2使用Filter来截获发送给framework的每个请求

过滤器”是Servlet规范的一部分;换句话说,它们是Servlet API的一部分

拦截器
是Struts 2框架的一部分,并且只是Struts 2框架完成的请求处理的一部分。如果您使用Struts 2,您应该使用拦截器来包装Struts 2操作的功能


简而言之,拦截器是一组可在不同地方使用的可重用组件。Struts2创建了一组拦截器,用于处理每个操作请求的一些常见任务,如数据传输、数据转换、验证等。

我能想到的几点区别:

  • 是JavaEE的一部分,拦截器是Struts的一部分
  • 筛选器不能是特定于操作的,而应该是特定于URL的(有时可能意味着特定于操作),它们只能映射到Servlet
  • 文件管理器更适合部署人员(虽然开发人员也使用它们,但如果部署人员有足够的知识,他们可以在部署期间进行更改),部署人员可以选择配置为哪个请求调用哪些过滤器,而拦截器则适合开发人员,他们可以在执行操作之前和之后决定如何添加逻辑
  • 在筛选器中不可用,但在拦截器中可以
  • 若您不是通过Struts框架处理请求,那个么就不能使用拦截器,比如说您使用Servlet来处理特定的请求
编辑:将注释作为答案的一部分移动:


拦截器作为一种模式并不特定于Struts2,它在Spring中可用,Hibernate.t.c

“拦截器是一组可重用的组件“-nice point:)+1只需添加一点
拦截器
并不特定于Struts2。这是一个通用概念,在spring、hibernate和许多其他平台上都可以使用。在所有真正好的解释上,过滤器都可以映射到任何URL,无论它是否是servlet(re:second point)。不确定你所说的过滤器是为部署者准备的;有些过滤器可能足够通用,非开发人员可以对其进行配置,但过滤器也有前后功能,它们是由开发人员编写的,几乎总是需要开发人员指定。澄清一下,目的是说部署人员可以更改它们,如果他们知道过滤器做什么或诸如此类的事情,说得很清楚though@mprabhat拦截器遵循命令设计模式添加到您的答案中,以便更好地理解。