2010-07-20 59 views

回答

9

甲支柱(Struts1的/ Struts的经典)行动更绑的servlet。在Struts2中,情况完全不同。 Struts2操作只是一个POJO(纯Java类),完全与Servlet API分离。这种解耦方便了测试。

在Struts2 webapp的典型工作流程中,将为每个请求实例化一个动作,并将与一个Servlet相关联(如果需要知道该关联,它可以实现接口;通常这不是必需的也不可取)。与Servlet(和Struts动作)有一个重要的概念上的区别是Struts2的动作不会被重复用于不同的请求,因此是线程安全的:比如,可能发生三个http请求(同时或不同时)由一个servlet实例;但是在这种情况下,我们仍然会有三个不同的Struts2动作实例,每个请求都有一个实例。

1
  1. Struts是一个位于香草java servlet之上的抽象层。操作本身是由程序员定义的,当URL被击中时(通过配置哪个url映射到哪个操作),struts框架会调用它们。所以它们并不真正与servlet“比较”,它们是servlet提供的功能的抽象。你对一个动作做的一个典型的事情是输出一个jsp,它相当于一个servlet。所以会发生什么是 一)请求时,被映射到行动 B)动作加载一些数据 C)行动呈现一个jsp,加载的数据传递给JSP。

  2. 该动作可以直接输出到请求/响应,如果这是你想要的,但在大多数情况下,很可能不是好的做法。

0

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