前端控制器是一个Servlet但在Struts2,它是一个滤波器。 什么是可能的原因将其更改为一个过滤器?
Answer 1:
(这是意见,你需要问原来的WebWork的作者。)
国际海事组织它更直观一点来包装一个过滤器内部的请求,因为这就是过滤器设计。
已经有大约从过滤服务资源的有效性的争论。 该规范规定:
过滤器一般不创建一个响应或servlet的做,而他们修改或调整资源的请求,并修改或调整从资源的响应响应请求。
有些人所说的(前特别是一些WebSphere支持票,偶尔我重新阅读的过程中规范了Struts用户邮件列表的电子邮件线程 ),该规范不允许的Struts 2的过滤器的使用,但很明显,没有什么不允许他们使用这种方式。
过滤器允许在处理其它类型的请求(向前,包含和容器错误)通过使用的更多的灵活性<dispatch>
下元件<filter>
配置。
需要注意的是:原来是在WebWork的一个servlet -你可以看看提交日志深挖原因,只要是发生了变化,但它是很长一段时间以前,7年以上的量级。
Answer 2:
因为在Struts2导入拦截的。 有必要对Struts2的贡献者有从正面主控制器,这样用户不能突破的Java EE模式中的威胁。 然而Struts2的调度员都建立在Servlet的层次结构的顶部,但它减少了从安全性角度考虑了很多的努力。
原因:
- 提供一个集中控制器的框架。
- 有拦截器和背景它可以在你的手指跳舞。
Answer 3:
有三种可能性,为什么过滤器被指定为Strtus2前端控制器
如前面控制器做出servlet需要开发者提供一个合适的值,其中让框架初始化许多重要方面(即支柱的配置文件)作为容器启动。 在不存在其的框架被初始化仅仅作为第一请求hits.Struts2使我们的生活容易通过提供前端控制器作为一个过滤器,并通过自然web.xml中的过滤器被作为容器启动自动初始化。 有没有必要这样时加载的启动标签。
第二个,但重要的是,在Struts2框架引进拦截。 它不仅降低我们的编码工作,而是帮助我们写我们本来用于编码和必要的改变过滤器在web.xml,而不是现在Struts1.So适合在过滤器现在好了可以移动到任何拦截器代码的任何代码(这是比过滤器更可控的),所有的配置可以在struts.xml中文件来控制,不需要触摸web.xml文件。
前端控制器是一个过滤器还可以帮助实现的Struts即UI主题的新功能。 所有在主题的静态资源现在通过过滤服务