1、单击此处编辑母版标题样式,2012/10/23,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,8,章,Struts 2,框架入门,Struts,这个名字来源于在建筑和旧式飞机中使用的支持金属架。它是第一个实现了,Web,层,MVC,架构的开源框架。本章我们在简要介绍,MVC,模式和,Struts 2,框架安装基础上,实现我们第一个,HelloWorld,程序的配置与实现。,8,.,1,.,1,Struts 2,的由来,Struts 2,是,Struts,的下一代产品,是在,Struts,和,WebWork,的技术基础上进行了合并的全新的,Struts 2,框架,如图,8.
2、1,所示。,但是,Struts 2,的体系结构与,Struts,1,的体系结构的差别巨大。,Struts 2,是以,WebWork,为核心的,所以,Struts 2,可以理解为,WebWork,的更新产品。但是由于,Struts,1,名声较大的缘故,所以合并之后,Apache,基金会将其命名为,Struts 2,。,Struts 2,是一个基于,J2EE,平台的,MVC,框架,它主要是采用,Servlet,和,JSP,技术来实现的。下面我们就带领大家一起来进入,Struts 2,框架的世界。,8,.,1.2 MVC,模式,MVC,是一种设计模式,最早是由,Xerox,(施乐)公司在,20,世纪
3、80,年代提出的。随后,它成为了一种著名的用户界面设计架构,如图,8.2,所示。,8,.,1.2 MVC,模式,MVC,英文全称为,Model-View-Controller,,即把一个应用程序的输入层、业务处理层、控制流程层按照,View,、,Model,、,Controller,的方式实现了分离,并分别承担不同的任务。图,8.3,显示了这三个模块各自的功能。,8,.,1.2 MVC,模式,MVC,模式体现了分层设计的思想,它有以下几点好处:,从视图方面来说,由于多种视图可共享一个后台模型,这就为实现多种用户界面提供了便利。,从模型方面来说,由于其实现与界面独立,因此模型只需提供接口供上层
4、调用,很好的体现了面向对象设计的信息封装和隐藏的原则。,从控制器方面来说,控制器作为介于视图和后台模型间的控制组件,可更好的维护程序流程,选择业务模型,选择用户视图,使程序的调用规则更加清晰,很大程度上优化了系统结构。,正是由于,MVC,的优势,使它成为软件设计的典范,目前大多数系统都采用了,MVC,模式来进行系统架构与实现。,8,.,1.3 Java,Web,的实现模型,在,Java Web,领域存在着两种经典模型,也可以称为实现模式,分别是,Model,1,和,Model,2,。这两种模型都是由,Sun,公司提出的,它们都可被看作是,MVC,的具体实现形式。现在我们就来比较一下这两种模型。
5、首先来看,Model,1,,如图,8.4,所示。,8,.,1.3 Java,Web,的实现模型,在这种模型中,,JSP,充当着控制器与视图的双重角色,,JavaBean,扮演了模型的解色。,JSP,直接调用后台模型进行业务处理,同时,再由,JSP,返回用户结果界面,如图,8.5,所示。,8,.,1.3 Java,Web,的实现模型,这种模型对于一些小型的程序还是可以满足的,但对于大规模的系统就显得有些力不从心。因为倘若将,JSP,既当成控制器又当成视图,那么,在页面代码里就会有大量的,HTML,标记与,Java,语言的混合物,这对程序的维护是非常不利的,而且对于页面开发人员和程序设计人员的分工
6、将造成太多约束,无法使它们并行工作,开发效率也就被大大降低。所以,Sun,公司在,Model,1,基础上开发出了,Model,2,模型,如图,8.6,所示。,8,.,1.3 Java,Web,的实现模型,在,Model,2,模型中,,JSP,既作为视图又作为控制器的局面不再存在了,而是使用了,Servlet,作为控制器,,JSP,则单纯的只负责显示逻辑(还包括很少量的,Java,代码),如图,8.7,所示,。,Model,2,清楚的划分了表达、控制、模型这三层结构,很好的实现了,MVC,设计思想。因此,对于大型系统的设计与开发,Model,2,提供了很大的帮助。,8,.,1,.,4,为什么要使
7、用,Struts 2,Struts 2,是目前最为成功的,J2EE,框架之一,在众多的,MVC,框架之中脱颖而出,受到了绝大部分程序员的青睐。究其原因,是因为,Struts 2,具备了其他框架无法比拟的优势,如图,8.8,所示。,Struts 2,有着如此巨大的优势,相信大家一定有了跃跃欲试的感觉,下面我们就知道大家如何在自己的计算机中完成,Struts 2,的安装和配置。,8.2 Struts 2,的下载与安装,本节我们为大家介绍如何下载和安装,Struts 2,,以及,Struts 2,中包含文件的作用,然后通过,Struts 2,自带的实例验证,Struts 2,安装是否成功。,8.2.
8、1,Struts 2,的下载过程,Apache,官方网站提供最新版本的,Struts 2,下载,所以建议读者到官方网站下载。下面将详细讲解,Struts 2,的下载过程。,在浏览器地址栏中输入,Apache struts,官方网站网址,struts.apache.org/,。页面更新后单击,Recent Release,模块中的,Struts,2.3.4,版本进行下载。,注意:,Struts 1,与,Struts 2,仍然在同一个网页中,没有明显区别,下载时读者要特别注意版本号。即版本号要以,2,开头。,在进入的下载页面中,我们选择,Full Releases,版本集合进行下载。单击,Stru
9、ts 2.3.4,中的完全发布版(,Full Distribution,),struts-2.3.4-all.zip,版本完成,Struts 2,的下载。,8.2.1,Struts 2,的下载过程,下载完成后,我们得到一个,zip,文件,将其进行解压,可以看到该文件夹中包括,4,个目录。它们各自具有不同的作用,如图,8.11,所示。,8.2.2 Struts 2,安装过程,首先我们在,MyEclipse,软件中新建一个,Struts,项目工程,在,Struts,工程的右键菜单上单击,【Properties】,命令,打开,【Properties for Struts2】,对话框,在,Struts
10、2,解压后的,lib,目录中选择如下,7,个文件:,struts2-core-2.3.4.jar,xwork-core-2.3.4.jar,ognl-3.0.5.jar,freemarker-2.3.19.jar,commons-logging-1.1.1.jar,commons-fileupload-1.2.2.jar,commons-lang3-3.1.jar,8.3,使用,Struts 2,实现第一个程序,这一节我们为大家介绍如何利用,Struts 2,进行,Web,应用开发。首先我们学习一下,Struts 2,的工作流程。,8.3.1 Struts,2,的工作流程,Struts,2,
11、与,WebWork,的工作方式类似,,Struts,2,同样使用了拦截器作为其处理用户请求的控制器。在,Struts2,中有一个核心控制器,FilterDispatcher,,它负责处理用户的所有请求,如果遇到以,.action,结尾的请求,URL,,就会交给,Struts,2,框架来处理。,Struts,2,的工作流程我们可以用图,8.14,来表示。,8.3.1 Struts,2,的工作流程,我们还可以对图,8.14,的内容简化为如图,8.15,所示的样式。,8.3.2,开发一个,Struts 2,框架程序的步骤,对应于,Struts 2,的工作流程,我们来为大家讲解一下开发一个,Strut
12、s 2,框架程序的步骤,其步骤大致如图,8.16,所示。,知道了,Struts 2,框架程序的开发步骤,我们就可以开始,Struts 2,程序的开发了,同样,我们来看看如何用,Struts 2,输出最经典的“,HelloWorld!,”语句。,8.3.3,配置,web.xml,Struts 2,的,web.xml,文件配置方法非常简单,即在,web.xml,中配置,Struts 2,提供的过滤器,并设置为所有的请求(,/*,)都要通过这个过滤器,如图,8.17,所示。,8.3.4,编写,JSP,界面,接下来我们编写一个页面文件。在这个例子中使用了,Struts 2,标签库提供的“,proper
13、ty,”标签用来显示,message,的属性值。,8.3.5,编写,Action,Action,类是最基本的逻辑处理单元,在,MVC,模式中分发器分发给不同的,Action,类,来处理请求。在,Struts 2,中,Action,类不必再实现,Action,接口,可以是任何类。但是一般还要继承,ActionSupport,类,因为其提供了大量的基本功能,如错误信息处理等。,8.3.6,配置文件中增加映射,Struts 2,的配置文件是,struts.xml,,所有请求和分发以及其他配置都在这个文件中定义,,struts.xml,文件应该放在,WEB-INF,目录下的,classes,文件中。如示例,8.3,所示,配置了一个名称为,HelloWorld,的,action,,处理类是,struts2.HelloWorld,,处理后的结果转到,helloWorld.jsp,页面上。,8.4,小结,本章是,Struts 2,的入门章节,主要介绍了,Struts 2,的一些基础知识及下载安装过程。最后我们又通过一个,HelloWorld,程序展示了,Struts 2,框架程序的开发步骤。虽然本章内容不多,但是是后面所有,Struts 2,开发框架学习的基础。读者应多加练习,熟练掌握,Struts 2,程序的开发步骤和配置方法。,






