Struts简介
当前位置:以往代写 > JAVA 教程 >Struts简介
2019-06-14

Struts简介

Struts简介

副标题#e#

一、Struts的发源

Struts最早是作为Apache Jakarta项目标构成部门,项目标创建者但愿通过对该项目标研究,改造和提高JavaServer Pages 、Servlet、标签库以及面向工具的技能水准。Struts这个名字来历于在修建和旧式飞机中利用的支持金属架。这个框架之所以叫"Struts",是为了提醒我们记着那些支撑我们衡宇,修建,桥梁,甚至我们踩高跷时候的基本支撑。这也是一个表明Struts在开拓Web应用措施中所饰演的脚色的出色描写。当成立一个物理修建时,修建工程师利用支柱为修建的每一层提供支持。同样,软件工程师利用Struts为业务应用的每一层提供支持。它的目标是为了辅佐我们淘汰在运用MVC设计模子来开拓Web应用的时间。我们仍然需要进修和应用该架构,不外它将可以完成个中一些沉重的事情。假如想殽杂利用Servlets和JSP的利益来成立可扩展的应用,Struts是一个不错的选择。

早期Smalltalk 措施语言便回收了MVC(Model-View -Controller) 模式( Patterns ) 以增加措施代码弹性,MVC模式将措施代码整理切割为三部份,Model 部门是业务与应用规模( Business domain) 相关逻辑、打点状态之工具,Controller 部门吸收来自View 所输入的资料并与Model 部门互动,是业务流程节制( Flow Control) 之处,View 部门则认真揭示资料、吸收利用者输入资料。在Java 应用中,JFC/Swing、AWT、JSP 皆是可用作View 之技能规格,而JavaBean 与Enterprise JavaBean 规格则可用于Model 措施代码,一旦应用措施以MVC 模式加以适当之支解,Model 部门措施代码可在差异利用者接口外观之应用措施中反复利用。

跟着JSP 与Servlet 技能大量应用于以Web 为基本之应用措施,Java 开拓人员群体认为应以较佳之模式以晋升Web 应用措施之可维护性与反复利用性。早期JSP 规格书中曾罗列两种可行之JSP 应用架构,别离为Model1 与Model 2。

在Model 1 架构中,JSP 直接处理惩罚Web 欣赏器送来之请求( Request ),并辅以JavaBean 处理惩罚应用相关逻辑。Model 1 架构纯真编写较量容易,但在Model 1 中JSP 大概同时负担View 与Controller 脚色,两类措施代码有大概稠浊而不易维护。而Model 2 中将Servlet 纳入架构中饰演前端Controller 脚色,将Web 欣赏器送出之请求会合送至Servlet ,Servlet 可会合打点利用者登入、权限节制、多国语言转换等前置处理惩罚,再视需求转向给对应之JSP 处理惩罚。Model 2 中回收了较佳之MVC 模式,但增加了编写巨大度。

Struts是Apache软件基金下Jakarta项目标一部门。除Struts之外,尚有其他乐成的开源产物,包罗Tomcat, Ant 和Velocity。2000 年Craig R. McClanahan 先生孝敬了他编写的JSP Model 2 架构之Application Framework 原始措施代码给Apache 基金会,成为Apache Jakarta 打算Struts Framework 前身。

开始的代码基本从2000年5月开始开拓,直到2001年6月,1.0版本宣布。有30 多个开拓者参加进来,并有数千人参加到接头组中。Struts 代码基本由一个志愿的Commnitter团队来打点。到2002年,Struts 小组共有9个志愿Commnitter。

Struts框架的主要架构设计和开拓者是Craig R.McClanahan。Craig 也是Tomcat 4的主要架构师,以及Java Web Services Developer Pack的主要架构师和实现者。他此刻是Sun的JavaServer Faces (JSR-127) 以及J2EE平台的Web层架构的类型率领。Craig R. McClanahan 先生是JCP ExpertGroup 成员之一,曾参加JSP 规格拟定与Tomcat 4 之编写,因此Struts Framework 广受Java 开拓人员群体所重视。Borland 自2002 年底开始于开拓东西JBuilder 中支持Struts Framework。

二、Struts安装

1、安装Struts需要的软件

Java Development Kit– 我们需要download和install 1.2(或之后)版本的JDK。

下载地点:

http://java.sun.com/j2se

Servlet Container — 凡是的选择是下载Tomcat(至少是3.1版,推荐利用4.0以上的版本)。

下载地点:

http://jakarta.apache.org/tomcat

Ant Build System — 假如我们通过Struts源码宣布包安装,我们必需下载1.1或之后版本的ant build system。在我们通过Struts来开拓我们本身的Web应用措施是,推荐利用ant来build我们的应用。

下载地点:

http://jakarta.apache.org/ant

Servlet API Classes — 为了编译Structs本身,或应用措施利用Struts,我们需要一个包括Servlet和JSP API工具的servlet.jar包。大大都Servlet container(譬喻Tomcat)已经自带了这个文件。不然,我们必须下载:http://jakarta.apache.org/builds/jakarta-servletapi

XML Parser — Structs需要一个与Java API for XML Parsing(JAXP)规格兼容的XML处理惩罚器,我们可以利用Xerces。

下载地点:

http://xml.apache.org/xerces-j

Xalan XSLT Processor — 假如我们通过Structs源码宣布版来结构我们的Structs系统,我们必需下载和安装1_2_D01或之后版本的Xalan XSLT处理惩罚器(Xerces中已自带Xalan)。这个处理惩罚器用于将基于XML的Structs文档转换为Html文档。


#p#副标题#e#

2、通过源码结构Structs

1)下载Structs的源码宣布包。

2)配置ANT_HOME情况变量,指向我们的Ant目次。

3)配置JAVA_HOME情况变量,指向我们的JDK目次。

4)配置SERVLETAPI_HOME情况变量,指向我们的Servlet API目次(假如我们的CLASSPATH已经包括了servlet.jar,就不需要指定该目次)

5)将Structs的源码宣布包举办解包。

6)进入Structs目次,运行以下呼吁:

./build.sh dist

该呼吁将建设Struts的二进制宣布包,目次在../dist/structs(相对付我们的编译目次)。

3、通过Struts的二进制宣布包安装Structs

1)下载Struts的二进制宣布版。

2)将Struts的二进制宣布版举办解包。(假如我们是通过Struts源码结构Struts,build的功效就已经是已解包的Struts)。解包后的Struts包括以下内容:

lib/struts.jar — 这个文件包括了Struts的所有Java工具。我们需要把它拷贝到我们的Web应用的WEB-INF/lib目次。

lib/structs.tld –这是一个"tag library descriptor"文件,它描写了Struts库的自由tag。需要将它拷贝到我们的Web应用的WEB-INF目次。

#p#分页标题#e#

webapps/struts-documentation.war — 这是一个"web application archive"文件,包括了所有的Struts文档。我们可以将它安装到支持Servlet API 2.2或之后版本的servlet container(推荐利用tomcat)中。

webapps/struts-example.war — 这是一个web应用实例,它遍及地演示了Struts的很多成果。我们可以将它安装到兼容Servlet2.2或之后版本以及JSP1.1或之后版本类型的servlet容器中(推荐利用tomcat)。

webapps/struts-test.war — 这个web应用包括了Struts支持的很多tag的测试网页,可以作为利用Struts tag的例子。

4、Struts的根基组件包

安装好的struts约莫有15包,近200个类所构成,并且数量还在不绝的扩展。在此我们不能一一先容,只能罗列几个主要的扼要的先容一下。下表说明白今朝struts api中根基的几个组件包,包罗

action,actions,config,util,taglib,validator。如下表1所示:

org.apache.struts.action
根基上,节制整个struts framework的运行的焦点类、组件都在这个包中,好比我们上面提到的节制器ActionServlet。已经Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 类。增加了动态扩展生成FormBean成果
org.apache.struts.actions
这个包是主要浸染是提供客户的http请求和业务逻辑处理惩罚之间的特定适配器转换成果,而1.0版本中的部门动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm组件所代替
org.apache.struts.config
提供对设置文件struts-config.xml元素的映射。这也是sturts1.1中新增的成果
org.apache.struts.util
Strtuts为了更好支持web application的应用,体统了一个些常用处事的支持,好比Connection Pool和Message Source。具体信息请参考http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html
org.apache.struts.taglib
这不是一个包,而是是一个客户标签类的荟萃。下面包罗Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个用于构建用户界面的标签类。
org.apache.struts.validator
Struts1.1 framework中增加了validator framework,用于动态的设置from表单的验证。具体信息请参阅 http://home.earthlink.net/~dwinterfeldt/

下面的图则显现了这几个组件包之间的干系。个中action是整个struts 架构的焦点。

Struts简介

#p#副标题#e#

三、Struts 设置与组件先容

有关struts组件设置struts-config.xml文件说明在前面的文章中已经先容过,这里就不再说了,下面主要先容框架中组件与设置。

下表列出了Struts的焦点类,即对应的经典的MVC组件职责。

表格2 焦点Struts 类和MVC 的对应

描写
ActionForward 用户指向可能视图选择
ActionForm 状态改变的数据
ActionMapping 状态改变事件
ActionServlet 节制器,接管用户请求和状态改变,以及发出视图选择
Action 节制器的一部门,于模子交互,执行状态改变或状态查询,以及汇报ActionServlet 下一个选择的视图

#p#分页标题#e#

除了这些焦点类, Struts 利用一些设置文件和视图助手(view helpers)来相同节制器和模子。下表列出了Struts 设置文件和描写了他们在架构中的脚色。

表格3 Strtuts 设置文件

文件 目标
ApplicationResources.properties 存储当地化信息和标签,以使应用可以国际化
struts-config.xml 存储节制器工具的缺省设置,包罗模子支持的用户指向,状态改变,状态查询

为将Struts设置数据袒露给视图,框架以JSP标签的形式提供了大量的助手类,如表4 Strtus 视图助手。

标志库描写符 目标
struts-html.tld 扩展HTML Form的JSP标志
struts-bean.tld 扩展处理惩罚JavaBean的JSP标志
struts-logic.tld 扩展测试属性值的JSP标志

节制器组件的设置

框架中的节制器组件是有org.apache.struts.action.ActionServlet类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。

ActionServlet设置:

我们需要在web.xml中声明ActionServlet,而且将它设置成启动时举办加载。以下为可以设置的初始化参数:

参数 默认值 描写
application Null 应用措施的资源荟萃的类
bufferSize 4096 文件上传的缓冲区巨细
config /WEB-INF/struts-config.xml 设置文件的位置和名称
content Text/html 默认的内容范例
debug 0 措施调试的级别
detail 0 措施调试细节的级别
factory Null 动静资源工场,用于国际化中表明动静资源
formBean org.apache.struts.action.ActionFormBean 封装ActionForm bean信息的类的名称
forward Org.apache.struts.action.ActionForward 封装ActionForward工具信息的类的名称
locale True 为true,将在用户会话中存储一个当地工具
mapping Org.apache.struts.action.ActionForward 封装ActionMapping信息的类的名称
maxFileSize 250M 上传文件的最大尺寸
multipartClass Org.apache.struts.action.ActionForward 处理惩罚多部门请求的类的名称
noCache False HTTP标头是否要配置为克制缓寸
Null True 配置为true,对付无效的信息要害字将返回null
tempDir 作为一个servlet参数提供应措施的事情目次 处理惩罚下载文件是利用的姑且事情目次
validate True 是否利用新名目标设置文件
vallidating True 是否对设置文件举办有效性阐明

大大都环境下,尺度的servlet就可以或许满意用户需要。

#p#分页标题#e#

第一次收到特定请求的URI时,ActionServlet将适当的Action类举办实例化,然后ActionServlet在Action类实例中以servlet为变量名存储一个引用。当被实例化后,Action类会被暂存以备再用。

错误处理惩罚

struts提供了两个类来处理惩罚错误:ActionErrors和ActionError,它们都扩展org.apache.struts.action。ActionErrors生存着ActionError工具的荟萃,个中每一个代表了独立的错误信息。每个ActionError都包括了要害字,可以或许映射到资源文件中存储的错误信息,而这个资源文件是在ActionServlet初始化参数中指定的。

#p#副标题#e#

四、Struts的运行

可通过以下的步调在我们本身的应用措施中利用Struts:

1、将Struts目次的lib/struts.jar拷贝到web应用的WEB-INF/lib目次。

2、将Struts目次的lib/struts*.tld拷贝到web应用的WEB-INF目次。

3、修改Web应用目次的WEB-INF/web.xml文件,增加一个<servlet>元素来界说controller servlet,增加一个<servlet-mapping>元素来成立URI请求与servlet的对应干系。可以参照Struts例子中的WEB-INF/web.xml文件来相识具体的语法要求。

4、修改Web应用目次的WEB-INF/web.xml文件,使之包括以下的tag库界说:

<taglib>
<taglib-uri>/WEB-INF/struts.tld</taglib-uri>
<taglib-location>/WEB-INF/struts.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

5、建设一个WEB-INF/action.xml文件来界说我们的web应用的action映射干系。可以参照Struts例子中的action.xml文件来相识具体的语法要求。

6、在利用Struts tag库的JSP网页中插手以下tag库界说:

<@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>
<@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

7、最后,在编译我们的web应用的java措施时,不要忘了在CLASSPATH中包括struts.jar文件。

五、Struts优缺点

利益:

Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大利益。使开拓者能更深入的相识其内部实现机制。除此之外,Struts的利益主要会合表此刻两个方面:Taglib和页面导航。Taglib是Struts的标志库,灵勾当用,能大大提高开拓效率。别的,就今朝海内的JSP开拓者而言,除了利用JSP自带的常用标志外,很少开拓本身的标志,或者Struts是一个很好的起点。

关于页面导航,我们认为那将是此后的一个成长偏向,事实上,这样做,使系统的脉络越发清晰。通过一个设置文件,即可掌握整个系统各部门之间的接洽,这对付后期的维护有着莫大的长处。尤其是当另一批开拓者接办这个项目时,这种优势浮现得越发明明。

缺点:

Taglib是Struts的一大优势,但对付初学者而言,却需要一个一连进修的进程,甚至还会打乱我们网页编写的习惯,可是,当我们习惯了它时,我们会以为它真的很棒。Struts将MVC的Controller一分为三,在得到布局越发清晰的同时,也增加了系统的巨大度。毫无疑问,要领略 Struts 必需接管必然的培训。跟着变革的不绝插手,这有时会令人很沮丧。

Struts从发生到此刻还不外3-4年时间,就已慢慢越来越多运用于贸易软件。固然它此刻尚有不少缺点,但它是一种很是优秀的J2EE MVC实现方法,假如我们的系统筹备回收J2EE MVC架构,那么,不妨思量一下Struts。

Struts 是一种基于 Web 的 MVC 办理方案,所以必需用 HTML、JSP 文件和 servlet 来实现它,Struts 需要支持 JSP 1.1 和 Servlet 2.2 类型的 servlet 容器。进修、领略和把握Struts是我们每个基于J2EE软件开拓人员一门必修的课程,也是我们对企业J2EE技能应用的进一步深化。

    关键字:

在线提交作业