深入浅出学习struts框架(四):从MVC模式代码认识struts框架
从《深入浅出学习Struts框架(一):一个简单mvc模式代码示例开始》分析mvc和三层关系开始,引出这个mvc设计模式实例,到《深入浅出学习Struts框架(二):重构MVC模式代码中跳转路径和业务逻辑》抽象封装业务处理和路径跳转,再到《深入浅出学习Struts框架(三):彻底去掉TestServlet中的字符串和if-else语句块》去掉if-else语句块和字符串,经过三篇文章循序渐进的重构了一个mvc设计模式实例,其实也就是重构出来了一个struts框架雏形。今天来看看什么是struts框架。
1. 框架
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。也就是说框架是一个半成品的应用程序。
我们所面对的应用程序一般都是分为两部分,一部分是业务相关的组件部分,另一部分是和业务无关的组件部分。而我们知道和业务相关的组件部分的重用性是非常低的,这也是显而易见的事情;而和业务无关的组件部分,如验证、异常、程序流程控制等等服务组件的复用性是非常高的。所以当人们在不同的应用程序中抽出共性的组件,构成一个半成品应用程序,这时候框架就应运而生了。
2. Struts框架
什么是struts框架?解答这个问题,就不得不看先前的三篇中的mvc设计模式实例,因为struts框架是一个基于mvc的框架(如果弄懂那个实例,这里理解struts框架是非常轻松的)。
Struts框架结构如图:
上面图展示了struts框架的结构,从左到右,分别是V,C,M。表示层主要由JSP和标签库组成。所有通过struts框架的请求都经过ActionServlet接受(这个类struts框架已经给我封装好了),根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。
虽然现在还没有实现一个struts框架实例,但是我们有了先前mvc设计模式实例的基础,我们来看struts框架,我们发现我们先前的实例中的testservlet做了struts中的Actionservlet的事情;AddUserAction、DelUserAction、ModifyUserAction、QueryUserAciton做了struts中的Action事情,ActionForm做了struts中actionform的事情;actionmapping做了struts中actionmapping的事情;action_config.xml做了struts-config.xml的事情。可以看出先前我们的mvc设计模式其实就是一个struts框架的雏形,也更加让我们明白struts框架是基于MVC的框架。
有了上三篇文章作为引子,接触到struts框架就变得轻松许多,没有大量的概念,只有由浅入深的层层重构,最中展现在面前的就是高度封装的半成品应用程序,简单的不能再简单。这篇博客认识了struts框架的结构和本质,下一篇博客准备简单写一个struts框架的实例,从实例中来深入认识和熟悉struts框架。