您的位置:首页 > 编程语言 > Java开发

框架学习:webWork框架和struts2框架的结构和分析

2016-03-21 21:05 288 查看
上篇博客中,我简单的介绍了我们分层开发中每一层中拥有的框架,而且介绍了我常用的框架struts1的结构和原理分析,那么今天我继续介绍我熟悉的框架struts2的框架的结构和原理分析。

       在说struts2框架之前,我要先介绍另外一个框架webwork框架,这个框架也是一个mvc的框架,这个框架的设计思路是采用拦截链将用户的请求的数据转发到Action中,并负责将Action的处理结果转换成对用户的响应。它的这种设计思路能够和ServletAPI分离,鉴于我们的上篇博客介绍的struts1的缺点,所以webwork框架解决了struts1的这个缺点。

       我们来看一下webwork框架的结构图:

 



 

       有了这个流程图,我就不给大家讲解具体的原理流程了,它采用的是拦截链的机制,通过这些拦截链完成用户的相应请求,从而与servletAPI分离,当与servlet分离开的时候,也就是表明和容器解耦了;另外,我们从结构图中看到它的视图模版有jsp、FreeMarker等等,它的表示层技术比struts1框架的饱满许多。

       所以,webwork框架解决了struts1框架存在的问题,而且它的设计思路是非常好的,鉴于此,struts2框架就在struts1框架的基础上引入了webwork框架的设计思路应运而生了。所以我们就能够发现struts2兼具struts1的特性而且通过引入webwork框架的设计思路解决了struts1的一些缺点。

         struts2框架的大致的体系图:

      



 

        从图中我们能够看出它是引入的webwork框架的设计思路,而且它也是基于mvc的一个开源的框架。之后我们来说一下struts2框架的一个执行流程(流程图和webwork框架非常类似):

 



 

 
浏览器发送请求,通过几层过滤器完成一些功能,之后到actionmapper中,之后将请求传到核心控制器中
核心控制器filterDispatcher根据请求决定调用合适的Action
调用webwork的拦截器链自动请求通用功能,如校验之类的操作
回调action的execute方法,获取用户请求执行相应的业务逻辑
之后返回字符串,匹配result,之后跳转到相应的视图或其他的文档
之后在执行相应的拦截器链自动请求功能,随后转到web客户端。

 

       这样我们就对struts2框架的结构上的东西做了一个简单的介绍。在上篇博客讲解了struts1框架,所以有必要在这里对他俩进行一下对比(我仅仅总结了五条我认为比较重要的,以后如果发现其他的在随时补充):

 
在Action实现类方面的对比(struts1的Action继承action,struts2实现接口,也可以不实现,可以定制服务)
线程模式方面的对比(struts1存在线程安全问题,struts2不存在)

 ServletAPI依赖方面的对比(struts1依赖servletAPI,struts2不是)
可测性方面的对比(struts1难测试,依赖容器,struts2不是)
封装请求参数的对比(struts1使用actionform;struts2直接写到action,并且支持pojo对象)

 

       这篇博客就介绍到这里,宏观上的学习以前一直做的不好,所以这段时间一直在解决这个学习上出现的问题,希望我的这些重构的框架学习博客能够对大家有所帮助。下节课我会继续介绍我经常使用的框架的结构和执行流程的分析,敬请关注!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: