框架学习2-常见框架的结构和分析2 .

来源:互联网 发布:k歌达人软件 编辑:程序博客网 时间:2024/05/16 08:31

       在说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框架非常类似):

 

 

 

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

 

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

 

  1. 在Action实现类方面的对比(struts1的Action继承action,struts2实现接口,也可以不实现,可以定制服务)
  2. 线程模式方面的对比(struts1存在线程安全问题,struts2不存在)
  3.  ServletAPI依赖方面的对比(struts1依赖servletAPI,struts2不是)
  4. 可测性方面的对比(struts1难测试,依赖容器,struts2不是)
  5. 封装请求参数的对比(struts1使用actionform;struts2直接写到action,并且支持pojo对象)

 

       这篇博客就介绍到这里,宏观上的学习以前一直做的不好,所以这段时间一直在解决这个学习上出现的问题,希望我的这些重构的框架学习博客能够对大家有所帮助。下节课我会继续介绍我经常使用的框架的结构和执行流程的分析,敬请关注!

原创粉丝点击