网上文件管理系统中文Word格式文档下载.docx
- 文档编号:19031816
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:16
- 大小:32.62KB
网上文件管理系统中文Word格式文档下载.docx
《网上文件管理系统中文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《网上文件管理系统中文Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
用户通过超链接和HTMLform与Web应用程序进行交互。
超链接引导页面显示数他内容,如文本和图像。
表单通常通过一些定制动作向应用提交数据。
Struts提供了开发人员可用来定义超链接,表单,和定制动作这些交互的组件。
我们已经使用这些组件在第1章创建了一个入门程序。
第3章,我们还要用他们来创建另一个程序。
本文是架构性的总体介绍,所以我们继续介绍Struts的主要部件。
2.3.1超链
对应用开发人员来说,超链接是指向应用中某些资源的路径。
它们可能是web页面,
或者是定制动作。
人员可以定义超链接为一个ActionForward.
这些对象都有个逻辑名称和一个path属性。
这使得开发人员可以设置path然后通过
名称来引用ActionForward。
ActionForward通常在一个XML文件中定义,这个配置文件在Struts启动时读入。
Struts使用XML定义来创建Struts配置,包括一个ActionForward列表。
可用来创建到欢迎页面链接的ActionForward对象的XML元素看起来可能像:
<
forward
name="
welcome"
path="
/pages/index.jsp"
/>
这个元素创建一个ActionForwardJavaBean,其name属性设置为welcome,path属性设置为/pages/index.jsp.
JSP页面和其它组件就可以引用welcome转发。
Struts框架将查找welcome
ActionForwardbean并检索path属性来完成这个超链接。
这时开发人员可以改变链接的目
或Javacode中,使维护变得困难并且容易发生错误。
在Struts应用中,这些细节可以通过
应用配置来改变,而不用触及到具体的页面和Java类。
2.3.2HTML表单
web协议,HTTP和HTML,提供了一个从表单提交数据的机制,但却把数据接收作
为一个HTML表单来的输入,校验输入,重新显示表单以供用户进行修订(如果需要),以及伴随相应的提示和信息。
ActionForm其实是具有一些标准方法来管理校验和修订循环的JavaBean。
Struts自动匹配JavaBean属性和HTML表单控件的属性。
开发者定义ActionForm类,余下的就交给Struts。
例如,这个类将自动用HTML表单中同名的属性来组装username域:
publicfinalclassLogonFormextendsActionForm{
privateStringusername=null;
publicStringgetUsername(){
return(this.username);
}
publicvoidsetUsername(Stringusername){
this.username=username;
其它属性也会根据表单中的每个域被自动加入。
所以,完全不需要详细分析HTTP请求。
ActionForm是按通常的Java类创建的。
Struts配置通过一系列描述符引用ActionForm:
<
form-beans>
和<
form-bean>
元素。
元素是框架用来识别和实例化Actorm对象
form-bean
articleForm"
type="
org.apache.artimus.struts.Form"
Struts配置列出它使用的ActionFormbean的清单,并给每个bean一个在应用中被引用时的逻辑名。
2.3.3定制动作
HTML表单使用action参数来告诉浏览器将数据送到哪里?
Struts框架提供相应的Action类来接收数据。
框架会自动创建、组装、校验和最后处理Action对象对应的ActionForm。
这样,Action就可以直接从ActionFormbean取得它需要的数据。
比如下例:
publicfinalclassLogonActionextendsAction{
publicActionForwardperform(ActionMappingmapping,
ActionFormform,
HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException{
MyFormmyForm=(MyForm)form;
//...
returnmapping.findForward("
continue"
);
Action根据返回到控制器的ActionForward对象作出控制流的决定。
这允许Action选
为保证扩展性,控制器也传递当前的请求和响应对象。
实际上,Action可以做所有Java可以做的事情。
ActionForm和Action对象,Struts控制器层还提供几个特殊的组件,包括ActionMappings和ActionServlet。
Struts也提供在控制器层的应用本地化。
2.3.4ActionMappings
Struts框架提供了一个ActionMapping对象。
象ActionForward和ActionForm一样,ActionaMapping通常也在配置文件中定义:
在一个web应用中,每个资源必须通过URI面,和定制动作。
为了给定制动作一个XML
action-mappings>
action
/logonSubmit"
app.LogonAction"
logonForm"
scope="
request"
validate="
true"
input="
/pages/logon.jsp"
/action-mappings>
这也允许同一个Action对象定义为不同的ActionMappings。
例如,一个映射要求校验
而另一个映射不要求校验。
虽然它也可以子类化,但大多数Struts1.0的开发人员将ActionServlet处理为一个黑盒:
他们只是配置它,然后让自己工作。
在Struts1.1中,ActionServlet是比较易于扩展的。
第9章将讨论Struts1.1ActionServlet
的扩展点和配置选项。
Web应用也通过各种提示和信息与用户进行交互。
Struts组件均有内建的本地化特征,以便Struts应用可以为国际化用户使用。
我们在此书中贯穿使用本地化特征。
Form,定制的服务器端动作定义为Action类。
需要访问JDBC和EJB的开发人员也可通过Action对象进行。
这样,表现层不需要和Model
2.3.5ActionServlet
StrutsActionServlet完全在幕后工作,它将其他组件绑定在一起。
2.4用Struts开发Web应用
要使用Struts开发web应用,开发人员将需要的超链接定义为ActionForward,HTML表单定义为Action层打交道。
StrutsAction对象将收集View需要的数据,然后将它们转发到表现页面。
Struts提供JSP标记库,它们和JSP页面一起使用,简化HTML表单和存取Action要转发的其它数据。
其它表现机制,比如Velocitytemplates,也可用来访问Struts框架,来创建动态的web页面。
3为什么需要框架
我们介绍了应用框架,简短讨论了为什么框架很重要。
但为了真正理解一个解决方案,我们需要了解问题所在。
为web开发应用虽然是值得的,但也要迎接各种挑战。
让我们快速看看是什么使web开发富有挑战。
3.1Web—永无休止的修补
Web开发者受到两种web缺陷的影响。
首先,我们希望使用浏览器作为客户端。
其次,必须使用web协议进行通讯。
Web浏览器通过HTTP协议通信,并用HTML显示页面。
Web浏览器发送HTTP请求,加工和显示它收到的响应。
在处理很少改变的预先编好的页面时,这是个很好的平台。
但我们大多都是编写动态程序,页面针对不同的用户是不同的。
虽然有一些现成的动态特征的段,web仍然受到HTTP/HTML的制约。
很不幸,这种状况现在并没有些许改变。
Web开发人员在想战胜挑战时必须看到这些缺对编写强壮的Web应用有太多障碍,使用框架便显得至关重要,免得你的应用陷入无休止的工作和改进之中。
在开发web应用时我们面临的挑战是很巨大的。
但同时也是值得的。
HTTP协议和HTML客户端使所有的人都可以访问你的应用。
没有其他哪个平台能声称这样。
3.2Servlet解决方案
JavaServlet平台ISun,JST]扮演了一个基本框架,为Javaweb应用提供了大量的能力。
Servlet提供了一个处理HTTP请求和确保响应的基本接口。
它在HTTP之上构建了一个“会话,,上下文,帮助跟踪应用程序的用户。
当然它也提供其他的上下文,帮助应用传输数据到浏览器或者应用中的其他servlet。
Javaweb应用也具有对基本安全特性的统一访问,而这些安全特性在不同的服务器上的管理是不一样的。
为了将这些内容集成在一起,Servlet规范引入了一个容器来管理它们。
容器也可以提供其他服务,比如作为一个JSP的处理器。
Servlet容器可以包含它自己的webserver,也可以简单的作为一个现存服务器的附属组件。
对数据库访问,Java应用在其建议中有另外一个通用的框架:
JDBC。
开发者可以写标准的5QL接口,而将烦人的细节留给适配器来处理。
这使得可以很容易的改变数据库厂商,而不用重写源代码。
为了取得远程服务器的高性能数据库访问,web开发人员可以使用EJB平台。
大多数Java应用框架,包括Stmts,都可以和EJB一起使用。
总之,这使得基于Servlet的web应用非常轻便,并相对易于编写和维护。
Servlet和JSP在编写应用中扮演了完全不同的角色。
象Strtus这样的Javaweb应用框架构架于Servlet之上,给开发者提供一个无缝的集成环境。
3.3Servlet框架
大多数,不是全部,Javaweb框架使用SunScrvlet平台为基础。
这些框架都绑定一些预制的servlet,你可以插入到你的应用中去。
框架也包括一个类结构树,这些类你可以在你的应用中实现或者扩展。
通常,应用框架的目标是帮助你将你需要的数据从浏览器发出,进入到编程结构之中,这样你的应用就可以使用它一或者从编程结构中发出,进入到浏览器之中,这样你就可以看到。
一些框架,如TUrbineIASF,TUrbine,也提供helPer类来运行于JDBC数据库。
其他框架,如StrLlts,则是模型中立的。
它们既不阻碍数据库访问,也没有提供帮助。
而某些框架,如dbF0rmS[dbF0rmsl],则专注于数据库访问,而将其它任务留给开发人员或者其他框架。
3.3.1通用框架策略
Javaweb应用框架使用一些通用技术来帮助产品易于设计、编写和维护,包括:
1.外部配置文件
提供开发人员不想嵌入源代码中的实现细节。
2.中央控制器
提供一种方式,将HTTP请求排入一个易于管理的队列。
这种设计有时叫前端控制器模式(乃℃ntControlle:
IGo3」)
3.外部表现系统
让不同的人同时工作在同一应用的不同部分。
如,Java工程师可以工作在和中心控制器相关的类,而页面设计者则专注于JSP。
除了JSP,其他表现系统,如VelocityTemPlates或者xLST,都可以和Struts一起使用。
框架通常有各种组件,但基本上都共享这个特性。
这些公共策略早己在一些书象DeslgnPatternsIGo41和Core·
12月了Patte。
,IGo3]给出的范例中根深蒂固了。
许多开发者在讨论并使用这些模式,但也许还没有第一次在Web环境中实现它们。
使用设计模式,如MVC,使你可以容易的通过做正确的事情来构建你的应用。
在桌面环境中使用设计模式的优点己经众所周知了,但在Web环境部署这些模式却对大多数开发者来说还是不确定的。
2.3.4黑盒-白盒统一体
框架有时分为两极标有白盒和黑盒的统一体[Fayad]。
白盒框架严重依赖于面向对象的语言的承和动态绑定。
黑盒框架则注重定义可插入组件的接口,然后基于这些接口提供基本的起始组件。
接口和基本组件通常提供热点(hotspot)方法,这个方法可以直接使用或者重写后提供特别的行为。
像许多正在使用的框架,Struts使用混合的黑盒和白盒技术。
但总体上,框架将偏向统一体的黑盒一端。
黑盒框架通常依赖于设计模式。
Struts也不例外。
事实上,设计模式通常被用来作为框架的总体描述[Johnson]。
为保持这个趋势,我们先介绍一下设计模式,以及它们是如何用在Struts框架之中。
4Struts,Model2,以及MVC
Struts关于自己要说的第一句话就是:
框架…鼓励应用架构基于Model2方法,即经典的MVC设计模式的变体。
这句话打消了一些web开发者的疑虑,对那些还没深入Model2或MVC的人来说却更加疑惑了。
事实上,没有深入了解MVC和SunModel2,要理解很多Struts的文章都很困难。
4.1MVC的演化
如1节所说,Model/View/Controller原本是建立Sm应用的框架。
框架支持代表
应用状态、屏幕表现和控制流的3个类,分别叫做Model,View,和Controller。
SmalltalkMVC框架在流行的书DesignPatterns:
ElemeeusableObject-Oriented
Software[Go4]是作为案例来研究的。
DesignPatterns这本书有四个作者,被称为”四人帮”。
Designatterns中的MVC例子称赞通知/订阅者(notify/subscribe)协议和观察者Observer模式的使用。
例子的基础是,对同一数据,系统可能需要不同的显示视图,比如条形图、饼图、数据表格等等。
这是一个划分应用的精彩理由,经常被重复引用。
每种视图可能在同一时间显示给不同的用户。
应用必须保证在其下面的数据或者模型改变时视图的更新。
为改变模型,用户提交一个请求给控制器,由控制起来配合改变模型。
数据视图必须跟着改变,以反映最近的模型改变状态。
SmalltalkMvC方案使用观察者通知模式。
在这种模式下,每个视图注册为一个模型数据的观察者。
然后模型可以通过发送消息给所有这册观察者,通知它们相关的改变。
其为Smallta玫MVC框架己经通用化了,他也可以应用它其他平台上面。
4.2Model2的出现
JSP的意图是使创建动态页面更容易。
JSP首先是作为servlet的替代引入的,还有就是MS的ASP。
Servlet的强大功能当作易于创建服务器页面的工具提供给开发者。
但强大的功能伴随着巨大的责任。
很多团队发现,如果他们一不小心,他们的项目就会因为纠缠如麻的页面变的容易崩溃。
进一步的特性需要使用复杂的脚本程序。
但脚本程序是非常难于重用的一除非你在页面间把代码“拷贝粘贴”。
工具页面也可以包括进来,但他们很难被组织在一起,并且造成非常丑陋的“资源”树。
有些东西会出错。
很多开发人员很快意识到,JSPs和servlets可以一起使用来部署web应用。
Servlet可以应付控制流,而JSP则可专注于讨厌的编写HTML的任务。
在例行课程中,结合使用JSP和servlet开始被称为ModelZ(单独使用JSP称为Modell)。
当然,从Sun哪里仍然没什么新东西…而且很多人很快指出JSPModelZ类似于经典的Model一View一Controller架构。
在很多场合,现在交互使用ModelZ和MVC这两个词己经很平常了,虽然还有一些争论,即一个应用是否是MVC,以及是否支持经典的观察者通知模式。
没有观察者通知的Model一View一Controller有时被称为MVCZ或WebMVC。
4.3应用层—和视图去耦合
ModelZ被认为区别于MVC的一个原因是,观察者/通知模式不能在web环境内工作的很好。
HTTP是一个“拉,,的协议:
客户请求然后服务器响应。
没有请求就没有相应。
观察者模式需要一种“推”协议来进行通知,以便服务器能在模型改变时将信息推送到客户端。
虽然也有一些方法能模拟将数据推送到客户端,但这和基本情况相悖,并且会视为是权宜的修补。
4.4Struts如何实现Model2,MVC,和层
Struts通过提供一个控制器Servlet实现了Sun的MedelZ架构,这个控制器可以用来管理JSP页面和其他表现设备之间的流程。
StrLlts通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现MVC/层模式。
JSP可以引用一个逻辑目标。
控制器组件在运行是提供准确的URI。
5Struts控制流
因为web应用是动态的,所以很难表现“OneTrueControlFlow'
‘。
依赖于环境,不同的方式下有很多不同的事情发生一特别是在web应用中。
但是事情仍然有一个通用的秩序。
如果你是个StrutS,应用框架,甚至web应用的新手,这些流程刚开始可能难以跟得上(理解)。
函待解决的各种问题不一定那么明显。
我们将在本书中详细涉及。
首先,在介绍树木之前我们先认识这片森林。
你读完此书后,我们建议你再次回来,看看每一部分是如何切合进这个总图的。
5.1总图
.客户请求匹酉队ctionURI样式的路径.
.容器将请求传递给Actionscrvlet.
.如果这个是模块化应用,Actionservlet选择响应的模块。
.Actionservlet查询路径的映射。
.如果映射标明了一个formbean,Actionservlet看是否己经有一个实例,或者创建一个新的实例。
如果己经有一个formbean,Actionservlet重设它,并根据HTTP请求重新组装它。
.如果mapping的validate属性设置为true,它将调用formbean的validate方法。
.如果失败,Servlet将控制转发到input属性标明的路径,控制流终止。
.如果mapping标明一个Action类型,如果它己经存在或己经实例化,它将被重用。
.Action的perform或execu七e方法被调用,并传递一个实例化的formbean(或者null)。
.Action可以组装formbean,调用业务对象,以及其他需要做的事情。
。
.Action返回一个ActionForward给Actionservlet.
.如果ActionF0rward指向另一个ActionURI,重新开始;
否则,显示页面或者其他资源,流程结束。
通常,结果是一个JSP页面,或者Jasper,或其它类似技术(非Stmts)加工的页面。
.如果JSP使用StrLltsHTML标记,并且在请求中看到正确的ActionF0rm,他们会从ActionForm中组装HTML控件。
否则,、html:
form,标记将创建一个。
从Struts1.1开始,如果form标记自行创建一个ActionF0rm,它将调用Action-F0rm的Reset方法。
如果你只是想创建一个空白的表单,你可以使用标准的ForwardAction来通过Action传递控制,然后离开页面。
5.2出色的细节
前面章节的大纲和图示很好的显示了Struts的概揽,但忽略了重要的细节。
让我们更深入到更好的地方。
因为这里是HTTP,所有东西都是从请求开始。
5.2.1请求由容器接收
Struts框架的核心组件是ActionServlet。
象所有的servlets,它生存在容器中,比如Tomcat,Resin,或者WebLogic等。
当容器启动时,读入部署描述符(web.xml),告诉容器要装入哪些个servlet。
一个标准的servlet设定是servletmapping。
容器使用这个设定来决定哪个请求将被送到哪个servlet:
servlet-mapping>
servlet-name>
action<
/servlet-name>
url-pattern>
/do/*<
/url-pattern>
/servlet-mapping>
这里,我们让容器将ActionServlet映射到那些符合/do/*样式的请求。
这些请求可以是:
/do/This
/do/That
/do/some
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 文件 管理 系统 中文
![提示](https://static.bdocx.com/images/bang_tan.gif)