【SSH进阶之路】深入源码,详解Struts基本实现流程(七)

原创 2014年09月22日 08:05:38

       通过一步步的封装我们实现了Struts的基本雏形,我们解决了Struts怎么实现MVC的问题,我们现在仅仅有了Struts的基础,对Struts的学习才刚刚开始,这篇我们要通过对比MVC来理解Struts的执行流程,最后深入Struts的源码,一看究竟。

 

MVC

 

M:业务逻辑,业务数据可以重复使用,我们经常说的javabean(其实struts没有实现业务层,也无法实现)

V:显示逻辑,同一份数据,对应多中显示方法,JSP代码实现

C:控制流程器,Servlet代码实现。

 

我们通过时序图看一下MVC模式的执行流程,如下图所示:


 

Struts

     

      从前面几篇博客,我们知道了Struts是基于JSP和Servlet的一个开源的Web应用框架,对MVC进行了高度封装,并且我们从MVC一步步的封装了一个Struts。

 

       目录:

      【SSH进阶之路】Struts基本原理 + 实现简单登录(二)

      【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三)

      【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)

      【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断(五)

      【SSH进阶之路】一步步重构MVC实现Struts框架——完善转向页面,大功告成(六)

 

      那我们就先画一个跟我们前面的例子一致,并且也跟MVC大致相同的时序图,为了帮助大家理解Struts的整个更详细的流。如下所示:

 

大致流程:

 


深入源码:
 

      我们理解Struts的基本流程之后,我们还需要深入源码一看究竟,我们学Struts不仅仅是为了使用,还要理解它的真正原理。如果你只为了简单的使用,可以到此为止,如果你想成为一个优秀的架构师,你还不能止步。

 

时序图如下所示:

 


      从上面的图中我们可以发现ActionServlet几乎完成了Struts的所有的功能,跟MVC的控制器一样,起到了非常重要的作用,我们再将它更加细粒度的解析一下,如下图所示:

 


       从上面的流程图,我们可以发现RequestProcessor起到了至关重要的作用,完成了截取URL,设置映射关系,以及反射创建ActionForm,然后设置值,再反射创建Action,最后再执行execute方法,完成转向。此时,我们的思路已经非常清晰了。下面我用自己的语言总结一下Struts的流程。

 

Struts流程

 

       我们已经看完了Struts的基本流程以及也深入源码看了一遍Struts的实现流程,下面我们需要用自己的语言来总结一下。

1) 客户端发出http请求。

2)根据web.xml配置,该请求被ActionServlet接收。

3)根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。

4)是否验证,需要验证则调用ActionForm的validate方法,验证失败则跳转到input,成功则继续。

5)Action从ActionForm获得数据,调用javabean(Model)中的业务方法处理数据。

6)Action返回ActionForward对象,跳转到相应JSP页面或Action。

7)返回http响应到客户端。

 

 上面的流程到处都是,看一看还行,看两看就烦,我们还是以一张图进行梳理:

           


总结


     最后,相信经过这一遍遍的对比和分析,你已经对Struts的基本原理了如指掌。


引子:

       下篇博客,我们会更新一些Hibernate的内容,先从基本原理入手,再给大家搭建Hibernate的开发环境,现实简单实例。



版权声明:本文为博主原创文章,未经博主允许不得转载。

SSH框架总结(框架分析+环境搭建+实例源码下载)

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。   集成SS...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SSH三大框架的工作原理及流程

Hibernate工作原理及为什么要用? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibe...

SSH协议详解

作为程序员,一定不会没有用过ssh吧。当我们需要远程登录到服务器上进行操作的时候,一般就会用ssh。ssh是secure shell的简称,它相对于早起的telnet和rsh的明文传输,提供了加密...

SSH框架整合开发详解(个人笔记)

一.创建数据库并设置编码。 A) create database oa default character set utf8。 二.MyEclipse工程 A) 在Myeclipse里创建web工程,...

SSH使用详解

一、SSH基础   (1)什么是SSH?   传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获...

Linux下触摸屏驱动程序分析

[摘要: 本文以linux3.5--Exynos4412仄台,剖析触摸屏驱动焦点内容。Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos4412...

Windows平台安装最新OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境

最近电脑重装系统了,第一件事重装OpenCV。这次直接装最新版,2014-4-25日发布的OpenCV2.4.9版本,下载链接:http://sourceforge.net/projects/open...

【SSH进阶之路】深入源码,详解Struts基本实现流程(七)

通过一步步的封装我们实现了Struts的基本雏形,我们解决了Struts怎么实现MVC的问题,我们现在仅仅有了Struts的基础,对Struts的学习才刚刚开始,这篇我们要通过对比MVC来理解Stru...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【SSH进阶之路】深入源码,详解Struts基本实现流程(七)
举报原因:
原因补充:

(最多只允许输入30个字)