0

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

4

2 回答 2

1

您以其他方式采用了这个概念。Struts2 使用 Filter 来拦截向框架提供的每个请求。

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

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

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

于 2012-05-29T06:34:43.063 回答
1

我能想到的几个区别:

  • 过滤器是 Java EE 的一部分,拦截器是 Struts 的一部分。
  • 过滤器不能是特定于操作的,而是特定于 URL(有时可能意味着特定于操作),它们只能映射到 Servlet。
  • Filer 更适合部署者(尽管开发者也使用它们,但如果部署者有足够的知识,他们可以在部署期间更改),部署者可以选择配置要为哪个请求调用哪些过滤器,而拦截器是给开发者的,他们决定如何添加执行动作之前,之后的逻辑。
  • 方法过滤在过滤器中不可用,但在拦截器中可用。
  • 如果您没有通过 Struts 框架处理请求,则不能使用拦截器,例如您使用 Servlet 来处理特定请求。

编辑:移动评论作为答案的一部分:

拦截器作为一种模式并不特定于 Struts2,并且在 Spring、Hibernate 等中可用

于 2012-05-29T06:42:01.490 回答