Struts 框架

struts简介

Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它经过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。mysql

Struts发展历史

Struts是做为ApacheJakarta项目的组成部分,项目的创立者但愿经过对该项目的研究,改进和提升JavaServerPages、servlet、标签库以及面向对象的技术水准。web

Struts这个名字的来源于在建筑和旧式飞机中使用的支持金属架。之因此这个框架叫作“struts”,是为了提醒咱们记住那些支撑咱们房屋,建筑,桥梁,甚至咱们踩高跷的基础支撑。这也是解释struts在开发web应用程序中所扮演的角色的精彩描述。sql

Struts的含义是”支柱,枝干”,它的目的是为了减小程序开发的时间,项目的建立者认为JSP,servlet的存在虽然能够帮助用户解决大部分问题,可是因为它们的编码对项目的开发带来了许多的不方便,可重用性也差,因此struts应运而生,帮助用户在最短的时间内解决这些问题。Struts框架提供以下服务:数据库

(1)做为控制器的Servlet。设计模式

(2)提供大量的标签库。服务器

(3)提供了用于国际化的框架,利用不一样的配置文件,能够帮助用户选择合适本身的语言。app

(4)提供了JDBC的实现,来定义数据源和数据库链接池。框架

(5)XML语法分析工具。工具

(6)文件下载机制。学习

 

Struts原理

Struts是对JSPModel2设计标准的一种实现,下面分别从模型(Model)、视图(view)和控制器3个部分介绍Struts的体系结构和工做原理。调用流程以下所示(图1.1)。


图1.1

 

(1)视图(view)

在Struts中,视图层包含两个部分,JSP页面和ActionForm。

ActionForm封装了用户提交的表单信息,其实ActonForm本质上就是JavaBean,这些JavaBean中没有业务逻辑,只提供了全部属性的getter和setter方法,这些属性和用户表单中的输入项是一一对应的。在Struts中就是经过ActionForm把用户表单信息提交给控制器。

JSP页面是经典MVC中主要的视图组件,主要是信息显示和控制器处理结果显示的功能。

除了以上,struts还提供了一个强大的struts标签库,来帮助用户解决显示逻辑,而且利用ActonForm组件将信息传递到控制层。

(2)控制器(Controller)

在控制层,struts提供了一个控制器组件ActionServlet,它继承自HttpServlet,并重载了HttpServlet的doGet(),doPost()方法,能够接受HTTP的响应,并进行转发,同时还提供了使用XML进行转发Mapping(映射)的功能。

(3)模型(Model)

模型表示状态和业务逻辑的处理,在通常的web应用程序中,用JavaBean或者EJB来实现系统的业务逻辑。在Struts中,struts提供Action对象,来管理业务逻辑的调用,帮助用户分离业务逻辑,也就是说struts自己不实现业务逻辑,但能够调用已完成的业务逻辑。

Struts工做流程

Struts工做流程以下(图1.2)所示。

 


图1.2

 

ActionServlet是struts中核心的控制器,全部的用户请求都必须经过ActionServlet的处理,而struts-config.xml是struts中核心的配置文件,在这个文件中配置了用户请求URL和控制器Action的映射关系,ActionServlet经过这个配置文件把用户的请求发送到对应的控制器中。

在struts web应用程序中,当web应用程序启动的时候,就会初始化ActionServlet在初始化ActionServlet的时候会加载struts-config.xml配置文件,在加载成功后会把这些URL和控制器映射关系存放在ActionMapping对象或者其余对象中。当ActionServlet接收到用户请求的时候,就会按照下面的流程对用户请求进行处理。

(1)ActionServlet接收到用户的请求后,会根据请求URL寻找匹配的ActionMapping对象,若是匹配失败,说明用户请求的URL路径信息有误,因此返回请求路径无效的信息,当找到匹配的ActionMapping的时候,进入到下一步。

(2)当ActionServlet找到匹配的ActionMapping对象的时候,会根据ActionMapping中的映射信息判断对应的ActionForm对象是否存在,若是不存在对应的ActionForm对象就建立一个新的ActionForm对应,并把用户提交的表单信息保存到这个ActionForm对象中。

(3)在struts-config.xml中这个配置文件,能够配置表单是否须要验证,若是须要验证,就调用ActionForm中的validate()方法对用户输入的表单进行验证。

做为Struts框架的核心描述,struts-config.xml能够说一切尽在掌握。它不但描述了MVC模型,定义全部视图层和控制层之间的接口(ActionForm),与控制层和模型层的接口(Action)进行结合,并且能够定义一些附加组件,如国际化信息资源排至文件,标签库信息等。

(4)若是ActionForm的validate()方法返回了ActionErrors对象,则代表验证失败,ActionServlet把这个页面返回到用户输入的界面,提示用户从新输入。若是方法的返回值为null,就代表验证已经经过,能够进入下一步处理。

(5)ActionServlet能够根据ActionMapping对象查找用户请求转发给哪一个控制器Action,若是对应的Action对象不存在,就建立这个对象,并调用这个Action的excute()方法。

(6)业务逻辑控制器Action的execute()方法就会返回一个ActionForward对象,ActionServlet把控制器处理的结果转发到ActionForward对象指定的JSP页面。

(7)ActionForward对象指定的JSP页面根据返回的处理结果,用合适形式把服务器处理的结果展现给用户,到这里为止,一个客户请求的整个过程完毕。


以 上初步struts框架进行了介绍,和对原理进行了简单的分析。至于struts是如何实现MVC的,ActionServlet属于 Controller部分,Action和ActionForm属于Model层,仍是Action属于Controller层,不一样的人对struts 有不一样的理解。接下来真正的运用到实践中,在实践中深入去体会,原理当然重要,重要的是运用,是能驾驭和使用这个框架。就像学习开车同样,不是一蹴而就 的。

相关文章
相关标签/搜索