`
younglibin
  • 浏览: 1214152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2的Action并不带有任何Web容器相关的对象,Action又是如何工作在Web容器中

阅读更多

虽然Struts2的Action只是一个非常普通的Java对象,并不具备任何Web容器的特质,但是我们需要把Action放到一个更加大的环境中来看。事实上,Struts2为Action的执行,准备了完整的数据环境和执行环境。而这个执行环境,就保证了Action在Web容器中的顺利运行。

在Struts2中,每个Http的请求,会被发送到一个Filter。而这个Filter,就会针对每个请求,创建出一个代码的执行环境,并在这个基础上,为每个执行环境配备与之对应的数据环境,这个数据环境中的内容,就来自于Web容器中的一个又一个对象。这样,就能够顺利调用Action执行代码而无需担心它是否运行在Web容器中了。

至于这个执行环境和数据环境到底是什么,我们接下来会详细讲到。

 

 

 

 

刚刚我们提到Struts2会为每个Http的请求建立一个执行环境和数据环境。其中,数据环境就成为了Action获取Web容器的基础。所以,当Action需要获取Web容器的相关对象,需要通过数据环境来进行。


Struts2的Action的这一个重要特性,至少能为我们带来以下好处:

1. 使得Struts2的Action非常易于测试

如果我们完全不考虑Action的执行环境,仅仅把Action看作一个普通的Java对象,那么我们甚至可以直接new一个Action的对象,通过执行其中的方法完成测试。这样,我们就不需要任何的Mock,来模拟Web容器的环境。

2. 结合Action的执行环境,使得Struts2在Control这个层次上,能够定义更加丰富的执行层次

因为Action是一个普通的Java类,而不是一个Servlet类,完全脱离于Web容器,所以我们就能够更加方便地对Control层进行合理的层次设计,从而抽象出许多公共的逻辑,并将这些逻辑脱离出Action对象本身。事实上,Struts2也正是这么做的,无论是Interceptor,还是Result,其实都是抽象出了Action中公共的逻辑部分,将他们放到了Action的外面,从而更加简化了Action的开发。

3. 使得Struts2的Action看上去更像一个POJO,从而更加易于管理

Struts2的Action是一个线程安全的对象。而Web容器传递过来的参数,也会传递到Action中的成员变量中。这样,Action看上去就更像一个POJO,从而能够方便的被许多对象容器进行管理。比如说,你可以非常方便得把Action纳入到Spring的容器中进行管理。

分享到:
评论

相关推荐

    Struts2学习笔记

    - **Web容器过滤器**:在`web.xml`中配置Struts2的过滤器,确保所有请求都经过Struts2处理。 #### 三、Namespace - **概念**:命名空间是Struts2中用于组织Action的一种机制,每个Action可以通过指定的命名空间来...

    外文翻译 stus MVC

    Struts can help you control change in your Web project and promote specialization. Even if you never implement a system with Struts, you may get some ideas for your future servlets and JSP page ...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

    最新Java面试宝典pdf版

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

    Java面试宝典-经典

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

    java面试题大全(2012版)

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

    Java面试宝典2012版

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

    java面试宝典2012

    5、谈谈Struts中的Action servlet。 131 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 131 7、STRUTS的应用(如STRUTS架构) 132 8、说说struts1与struts2的区别。 132 9、...

    JAVA面试宝典2010

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

    Java面试宝典2012新版

    5、谈谈Struts中的Action servlet。 120 6、Struts优缺点 优点: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、...

Global site tag (gtag.js) - Google Analytics