Struts 2(一):初识Struts
【很久以前的笔记,后续继续完善】
在了解Struts 2框架之前,首先了解一下Model 1和Model 2架构,以及它们的优缺点。
1.1 Model 1架构模式
Model 1的核心是JSP文件,使用Model 1开发的项目包含大量相互独立的JSP文件和少部分JavaBean。使用Model 1进行开发时,Model 1的程序流程比较容易理解,用户通过表单提交信息给JSP页面,JSP页面接收用户提交的信息后通过JavaBean连接数据库并操作数据库,然后将结果返回给用户,其流程如下图所示:
Model 1非常容易理解,也非常容易实现,但是它有许多缺点:
(1)在JSP页面中充斥着大量的Java脚本代码,前端显示代码与业务逻辑代码混合,修改某一处很容易带来其他错误
(2)代码重用性非常差,JSP页面中充斥着大量功能类似的代码
(3)可扩展性差,前期开发的项目如果需要添加新的功能将是非常复杂
1.2 Model 2架构模式
Model 2是通过面向对象技术实现MVC模式,MVC中包含三个基本组成部分,分别是Model(模型,一般采用JavaBean来实现)、View(视图,一般采用JSP来实现)、Controller(控制器,一般采用Servlet来实现)。Model 2的程序流程相对Model 1来说要稍微复杂一些,首先是用户提交信息给控制器,控制器接收用户提交的信息并决定使用哪个模型完成业务逻辑,然后控制器根据业务处理结果决定使用哪个视图将最终结果返回给用户,其流程如下图所示:
1.3 Struts 2框架简介
在MVC框架出现之前,开发人员都是通过JSP+Servlet+JavaBean的方式来实现MVC模式,但是随着时间的发展,越来越多的问题暴露出来了,其中最重要的就是缺少一个标准,每个社区、公司都有自己的一套标准,很难进行统一开发。Struts框架的出现改变这种格局,开发人员可以通过它为业务应用的每一层提供支持。
Struts框架是Apache基金会中Jakarta项目组的一个开源项目,它基于MVC模式开发,能够帮助Java开发人员快速的通过MVC模式开发Web项目。Struts框架和其他Java架构一样,采用面向对象设计,并将MVC模式运用得淋漓尽致。Struts开源项目的创立者就是希望通过对该项目的研究,改进和提高JSP、Servlet、标签库以及面向对象的技术水准。同时Struts框架是一个开源项目,开发人员可以更深入的了解其内容实现机制。
Struts 2是Struts的换代代产品,Struts 2的体系结构与Struts 1的体系结构的差别是巨大的。Struts 2是以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计使得业务逻辑控制器能够与Selvet API完全脱离开,所以Struts 2可以理解为是WebWork的更新产品。
Struts 2的工作原理可以用下面这张图来描述:
Struts 2的工作细节可以用下面这张图来描述: