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