2012-05-29 61 views

回答

1

你把这个概念在其他way.Struts2使用过滤器拦截每一个请求被赋予的框架。

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

interceptors是Struts 2框架的一部分,并且是处理该请求的仅一部分被完成。由撑杆2 framework.If用户正在使用Struts 2,你应该用户拦截器在你的Struts 2的动作包装的功能。

在短的拦截器设置的可重用组件的可在各种places.Struts2被用来创造一套的拦截器来处理一些常见的任务,例如数据传输,数据转换,验证等每个Action请求。

+0

“nterceptors设置可重用的组件的” - 好听点:) +1 – mprabhat

1

,我能想到的一些区别:

  • Filters是Java EE的一部分,拦截器是Struts的一部分。
  • 过滤器不能具体行动,而他们是特定的URL(这可能意味着行动的具体次),他们可以只映射到Servlet的。
  • 文件管理器是更多的部署(尽管开发者也使用它们,但如果部署有足够的知识,他们可以在部署时间而改变),部署人员可以选择配置哪些过滤器将被调用的哪个请求,而拦截器是为开发者,他们决定如何在执行操作之前添加逻辑。
  • Method filtering不适用于过滤器,但可以在拦截器中使用。
  • 如果您未通过Struts框架处理请求,则不能使用拦截器,假设您使用Servlet处理特定请求。

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

拦截器作为一个模式都没有具体到Struts2的,并可在春,休眠等

+0

我想补充一点'Interceptors'不特定于Struts2.this是一个笼统的概念及其在春季可用,休眠等多项platforms.On一切真的很好的解释 –

+0

感谢Umesh制作,更新我的职务,以指示此 – mprabhat

+1

过滤器可映射到任何URL,无论它是否为servlet(re:第二点)。不确定您的过滤器对于部署者意味着什么; *一些*过滤器可能足够普遍,非开发者可以配置它,但过滤器在功能之前/之后,它们由开发人员编写,并且几乎总是需要由开发人员指定。 –