Struts2动作与Servlet相比有何区别?

4

Struts2操作与Servlets相比如何? 一个操作可以作为Servlet吗?

3个回答

10

在Struts(Struts1 / Struts Classic)中,Action与servlet的联系更紧密。但在Struts2中,情况大不相同。一个Struts2 Action只是一个POJO(普通Java类),完全解耦了Servlet API。此解耦有助于测试。

在典型的Struts2 Web应用程序工作流程中,每个请求都会实例化一个Action,并与Servlet相关联(如果需要了解此关联,则可以实现 ServletAware 接口;通常不建议这样做)。

与Servlet(以及Struts Action)的一个重要概念区别是,Struts2 Action不会被不同的请求重用,因此是线程安全的:例如,可能会有一个Servlet实例为三个http请求提供服务(同时或非同时),但在这种情况下,我们仍将拥有三个不同的Struts2 Action实例,每个请求一个。


1
  1. Struts是在原始Java servlet上的一个抽象层。动作本身由程序员定义,并在命中URL时由Struts框架调用(您可以配置哪个URL映射到哪个操作)。因此,它们不会真正“比较”与servlet相同,而是围绕servlet提供的功能进行抽象。您通常使用操作执行jsp输出,该输出等效于servlet。所以发生了什么 a)请求进来了,被映射到操作 b)操作加载一些数据 c)操作呈现jsp,将加载的数据传递给jsp。

  2. 如果您希望如此,操作可以直接输出到请求/响应,但在大多数情况下,这可能不是一个好的做法。


0

Struts2是基于Java EE技术的MVC框架实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接