在Struts1的为什么有Servlet的地方如在Struts2的情况下,有过滤器(Why in S

2019-09-17 05:32发布

前端控制器是一个Servlet但在Struts2,它是一个滤波器。 什么是可能的原因将其更改为一个过滤器?

Answer 1:

(这是意见,你需要问原来的WebWork的作者。)

国际海事组织它更直观一点来包装一个过滤器内部的请求,因为这就是过滤器设计。

已经有大约从过滤服务资源的有效性的争论。 该规范规定:

过滤器一般不创建一个响应或servlet的做,而他们修改或调整资源的请求,并修改或调整从资源的响应响应请求。

有些人所说的(前特别是一些WebSphere支持票,偶尔我重新阅读的过程中规范了Struts用户邮件列表的电子邮件线程 ),该规范不允许的Struts 2的过滤器的使用,但很明显,没有什么不允许他们使用这种方式。

过滤器允许在处理其它类型的请求(向前,包含和容器错误)通过使用的更多的灵活性<dispatch>下元件<filter>配置。

需要注意的是:原来在WebWork的一个servlet -你可以看看提交日志深挖原因,只要是发生了变化,但它是很长一段时间以前,7年以上的量级。



Answer 2:

因为在Struts2导入拦截的。 有必要对Struts2的贡献者有从正面主控制器,这样用户不能突破的Java EE模式中的威胁。 然而Struts2的调度员都建立在Servlet的层次结构的顶部,但它减少了从安全性角度考虑了很多的努力。

原因:

  1. 提供一个集中控制器的框架。
  2. 有拦截器和背景它可以在你的手指跳舞。


Answer 3:

有三种可能性,为什么过滤器被指定为Strtus2前端控制器

  1. 如前面控制器做出servlet需要开发者提供一个合适的值,其中让框架初始化许多重要方面(即支柱的配置文件)作为容器启动。 在不存在其的框架被初始化仅仅作为第一请求hits.Struts2使我们的生活容易通过提供前端控制器作为一个过滤器,并通过自然web.xml中的过滤器被作为容器启动自动初始化。 有没有必要这样时加载的启动标签。

  2. 第二个,但重要的是,在Struts2框架引进拦截。 它不仅降低我们的编码工作,而是帮助我们写我们本来用于编码和必要的改变过滤器在web.xml,而不是现在Struts1.So适合在过滤器现在好了可以移动到任何拦截器代码的任何代码(这是比过滤器更可控的),所有的配置可以在struts.xml中文件来控制,不需要触摸web.xml文件。

  3. 前端控制器是一个过滤器还可以帮助实现的Struts即UI主题的新功能。 所有在主题的静态资源现在通过过滤服务



文章来源: Why in Struts1 there is Servlet where as in case of Struts2 there is Filter