`
lishu-luo
  • 浏览: 3633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2源码解析–前期准备

阅读更多

转载请注明出处,作者:罗立树

 

在之前的文章里我分享了阅读源代码的方法,假如没有阅读过该文章的同学可以参考这里源代码阅读技巧。大家觉得感兴趣的话,也可以加入我的群:74914061,进行技术交流。在今后的系列文章,我将会由浅入深给大家讲解Struts2的设计思想,设计原理,和具体实现。

在深入讲解之前,大家可以阅读一下以下的资料:

 

java servlet2.3标准 (了解Servlet标准,方便对框架的了解)

OGNL表达式语言 (学习struts2 web界面编程和valuestack有用)

MVC框架模式  (总体了解设计原理)

JAVA反射机制  (了解struts2中的method是怎么执行的)

HTTP协议  (对HTTP了解,从而了解请求的过程,以及Servlet标准的实现机制)

java ThreadLocal (ActionContext有用)

命令模式 (Action的设计原则)

 

 

针对上面的知识,大家假如觉得比较陌生的话,就需要多些深入了解一下了,要不然就像我在源代码阅读的经验介绍中那样,即使看到源代码,也会感觉理解的不够深入,不够透彻。

 

在接下来的课程中,我们针对几个疑问点进行自问和解答

 

1.struts2是什么?有没有类似的框架?

 

struts2是一套MVC的web开发框架,它的前身是Webwork。和struts2类似的框架有struts1(目前已经停止维护),还有SpringMVC、阿里巴巴的webx、Tapestry、JSF等等。关于他们之间的优点和缺点不在这里详细描述,我们会在后面的系列文章中再专门去比较。

 

2.框架的作用是什么?

 

在传统的开发模式上(譬如基于Servlet和jsp的开发中,开发起来比较麻烦,页面和代码逻辑之间参数的传递,页面和代码逻辑之间的数据交互转向都比较困难),代码组织比较零散,存在着大量的重复代码,而且缺乏规范,导致在维护和理解分析上需要投入更多的时间。框架的作用就是将一系列通用的逻辑,进行抽象和封装,从而降低使用的难度和复杂度,复用更多的共用逻辑,使得形成一定的标准和规范。从而降低了软件开发的成本,并使得整体架构更加清晰明确,易于扩展维护。

 

为此struts2对整体结构进行了抽象,可以参考以下的架构图:

 

Struts2的总体架构图

 

struts2架构

 

Struts2中的关键域对象有:

 

1.Action 负责web层逻辑处理的对象(参考command模式)

 

2.Interceptor struts2拦截器,在action执行的前后做一些处理的工作。

 

3.Result 在action或者Interceptor的执行中,假如需要返回结果,终止本次请求行为,则可以返回一个Result,Result是对结果的抽象,有不同的实现,这是对展示层的一个封装。

 

其它的关键类会在下一节中进行更加详细的描述。

 

在本系列的文章中,我们会按照下列的顺序来讲解:

 

1.一次请求的执行过程从Filter到Action的返回的过程,源码跟踪

 

2.xwork技术原理源码解读

 

3.struts2的插件机制源码解读

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics