通过一步步的封装我们实现了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)是Java Web开发中广泛采用的三大框架集成,它们分别负责Web层、业务逻辑层和数据访问层。本项目"基于SSH的宠物医院项目源码"提供了从用户界面到数据库管理的...
《基于SSH设计的图书管理系统详解》 在信息技术领域,开发高效、稳定的软件系统是至关重要的。SSH(Struts + Spring + Hibernate)是一个流行的Java Web应用程序框架组合,它为开发人员提供了一个强大的工具集,...
这个"基于SSH的OA办公项目源码"提供了深入理解SSH框架及其在实际办公自动化(OA)系统中应用的实例。 1. **Struts2**:作为MVC(模型-视图-控制器)设计模式的实现,Struts2负责处理HTTP请求并分发到相应的业务逻辑...
本篇文章将深入探讨SSH2框架的整合过程,以及如何在MyEclipse环境中进行设置和调试,同时附带完整的源码供学习参考。 **Struts2** 是一款基于MVC设计模式的开源Java Web框架,主要负责控制应用程序的流程,提供动态...
在SSH整合中,Spring主要作为容器管理其他组件,如Struts的Action和Hibernate的SessionFactory,同时可以实现事务管理和安全控制。在BBS论坛系统中,Spring可以帮助管理Bean的生命周期,确保服务的单一实例,以及...
【SSH版购物商城源码详解】 SSH(Struts2 + Spring + Hibernate)是Java领域中一个经典的Web开发框架组合,广泛应用于构建企业级应用,尤其是电子商务平台。本篇将深入探讨基于SSH架构的购物商城源码,从核心组件、...
【SSH框架详解】 SSH框架,全称为Struts2、Hibernate和Spring的集成框架,是Java Web开发中的常用技术栈。这个框架组合了Struts2的MVC设计模式、Hibernate的对象关系映射(ORM)和Spring的依赖注入(DI)及事务管理...
Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码(内附数据库导出文件) 与书上最后一章内容完全对应 可以结合书上教程进行最后一章学习
《基于SSH设计的网上订餐系统详解》 SSH(Struts + Spring + Hibernate)是Java Web开发中的一个经典组合,它结合了MVC框架Struts、依赖注入容器Spring以及持久层框架Hibernate,为开发者提供了高效、灵活且强大的...
通过阅读和理解源码,可以深入学习SSH框架的实践应用,提升Web开发技能。 【毕业设计指导】 对于毕业生而言,基于SSH的购物网站项目是一个很好的实践平台,可以学习到完整的Web开发流程,包括前端交互、后端逻辑...
《SSH网上订餐系统(源码)详解》 网上订餐系统是现代餐饮业与互联网技术结合的重要产物,它极大地便利了消费者的生活,同时也为企业带来了更高效的运营模式。本系统基于SSH(Struts2 + Spring + Hibernate)框架,...
【当当网源码 SSH 实现详解】 当当网源码是基于SSH(Spring、Struts、Hibernate)三大框架构建的电商系统实现,这是一套经典的Java Web开发架构。SSH框架组合提供了强大的业务逻辑处理、视图展示以及数据持久化能力...
SSH2项目源码详解 SSH2,即Spring、Struts2和Hibernate的组合,是Java Web开发中的一个经典MVC框架。这个项目采用这三大框架构建,为开发者提供了灵活、高效且可扩展的开发环境。下面我们将深入探讨SSH2框架中的...
《基于SSH设计的图书管理系统详解》 SSH,全称为Struts + Spring + Hibernate,是Java Web开发中的一个经典组合,广泛应用于构建企业级应用。在这个系统中,Struts作为MVC(模型-视图-控制器)框架负责处理请求和...
**SSH整合Shiro源码详解** 在Web应用开发中,安全性是至关重要的。SSH(Spring、Struts2、Hibernate)和Apache Shiro都是常见的Java安全框架。SSH是用于构建MVC架构的开源框架,而Shiro则专注于身份验证、授权和...
在IT行业中,SSH是一个常见的开发框架组合,由Struts、Spring和Hibernate三个开源框架组成,用于构建企业级的Java Web应用程序。本教程将详细介绍如何在MyEclipse集成开发环境中整合这三个框架来实现一个简单的登录...
【Java SSH BOS物流管理系统详解】 SSH(Spring、Struts、Hibernate)是Java Web开发中的经典框架组合,常用于构建企业级应用。本系统“Java SSH物流管理BOS源码打包”提供了完整的源代码,旨在帮助开发者理解并...
【SSH记账管理系统源码详解】 SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架,常用于构建企业级应用程序。在这个基于SSH的记账管理系统源码中,我们可以深入理解这三个技术的协同工作方式以及如何...
总结来说,"基于SSH的汽车4S店汽车管理系统源码"是一个综合运用Java Web技术的实战项目,对于学习SSH框架和理解企业级应用开发流程具有很高的参考价值。通过研究和分析这个源码,开发者可以深入理解如何将这些技术...
【标题】:“Extjsmvc+ssh源码”指的是一个基于ExtJS MVC模式并结合SSH(Struts2、Spring、Hibernate)框架的Web应用程序源代码。这个项目可能是一个示例或者学习资源,展示了如何将这两者整合在一起开发复杂的前端...