当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 王和全(ok_winnerboy@sina.com)2003年 8 月 作为基于MVC模式的Web应用最经典框架,Struts已经正式推出了1.1版本,该版本在以往版本的基础上,提供了许多激动人心的新功能。
 

 

 ·ant 简介    »显示摘要«
    摘要:1. ant是什么?2. 安装ant3. 运行ant4. 编写build.xml5. 内置task(internet)6. ear task(internet)7. war task(internet)8. junit task(internet)----------------------------------------------------------------------------......
 ·建网站十大误区    »显示摘要«
    摘要:建网站十大误区1让技术人员来掌管网站 (让专家做专家得事,管理还是搞管理得人来得比较好)2不使用“免费”这个词 (免费和自由,是网络之所以很吸引人根源)3没有让你来访问得理由 (喜欢一个网站需要理由嘛?需要!~!~)4 没有风格 (没有风格,没有特色就会被网络上无敌多得同类得网站淹没)5 内容雷同,没有原创就没有竞争力。(生存得根本)6只要网站建了,就会有人来。(现在网站太......


深入Struts 1.1

王与全(ok_winnerboy@sina.com)

2003年 8 月 【程序编程相关:在ASP.NET中创建安全的web站点(

【推荐阅读:LCID地区代码

1.model 2 【扩展信息:Apple II liker progr

作为基于mvc模式的web应用最经典框架,struts已经正式推出了1.1版本,该版本在以往版本的基础上,提供了许多激动人心的新功能.本文就将带你走进struts 1.1去深入地了解这些功能.

说明:希望本文的读者能有一定的struts使用基础.

struts是基于model 2之上的,而model 2是经典的mvc(模型-视图-控制器)模型的web应用变体,这个改变主要是由于网络应用的特性--http协议的无状态性引起的.model 2的目的与mvc一样,也是利用控制器来分离模型与视图,达到一种层间松散耦合的效果,提高系统灵活性.复用性与可维护性.在多数情况下,你可以将model 2与mvc等同起来.

下图表示一个基于java技术的典型网络应用,从中可以看出model 2中的各个部分是如何对应于java中各种现有技术的.

在利用model 2之前,我们是把所有的表示逻辑与业务逻辑都集中在一起(比如大杂烩似的jsp),有时也称这种应用模式为model 1,model 1的主要缺点就是紧耦合,复用性差以及维护成本高.

2.struts 1.1 与model 2

既然struts 1.1是基于model 2之上,那它的底层机制也就是mvc,下面是struts 1.1中的mvc实现示意图:

图解说明:其中不同颜色代表mvc的不同部分:红色(控制器).紫色(模型)与绿色(视图)

首先,控制器(actionservlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的struts模块初始化相应的moduleconfig对象.比如配置文件中的action映射定义都保存在actionconfig集合中.相应地有controlconfig集合.formbeanconfig集合.forwardconfig集合与messageresourcesconfig集合等.

提示:模块是在struts 1.1中新提出的概念,在稍后的内容中我们将详细介绍,你现在可以简单地把模块看作是一个子系统,它们共同组成整个应用,同时又各自独立.struts 1.1中所有的处理都是在特定模块环境中进行的.模块的提出主要是为了解决struts 1.0中单配置文件的问题.

控制器接收http请求,并从actionconfig中找出对应于该请求的action子类,如果没有对应的action,控制器直接将请求转发给jsp或者静态页面.否则控制器将请求分发至具体action类进行处理.

在控制器调用具体action的execute方法之前,actionform对象将利用http请求中的参数来填充自己(可选步骤,需要在配置文件中指定).具体的actionform对象应该是actionform的子类对象,它其实就是一个javabean.此外,还可以在actionform类中调用validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的actionerrors对象.如果执行成功,actionform自动将这些参数信息以javabean(一般称之为form bean)的方式保存在servlet context中,这样它们就可以被其它action对象或者jsp调用.

struts将这些actionform的配置信息都放在formbeanconfig集合中,通过它们struts能够知道针对某个客户请求是否需要创建相应的actionform实例.

action很简单,一般只包含一个execute方法,它负责执行相应的业务逻辑,如果需要,它也进行相应的数据检查.执行完成之后,返回一个actionforward对象,控制器通过该actionforward对象来进行转发工作.我们主张将获取数据与执行业务逻辑的功能放到具体的javabean当中,而action只负责完成与控制有关的功能.遵循该原则,所以在上图中我将action对象归为控制器部分.

提示:其实在struts 1.1中,actionmapping的作用完全可以由actionconfig来替代,只不过由于它是公共api的一部分以及兼容性的问题得以保留.actionmapping通过继承actionconfig来获得与其一致的功能,你可以等同地看待它们.同理,其它例如actionforward与forwardconfig的关系也是如此.

下图给出了客户端从发出请求到获得响应整个过程的图解说明.

下面我们就来详细地讨论一下其中的每个部分,在这之前,先来了解一下模块的概念.

3.模块

我们知道,在struts 1.0中,我们只能在web.xml中为actionservlet指定一个配置文件,这对于我们这些网上的教学例子来说当然没什么问题,但是在实际的应用开发过程中,可能会有些麻烦.因为许多开发人员都可能同时需要修改配置文件,但是配置文件只能同时被一个人修改,这样肯定会造成一定程度上的资源争夺,势必会影响开发效率与引起开发人员的抱怨.

在struts 1.1中,为了解决这个并行开发的问题,提出了两种解决方案:

多个配置文件的支持 模块的支持

支持多个配置文件,是指你能够为actionservlet同时指定多个xml配置文件,文件之间以逗号分隔,比如struts提供的mailreader演示例子中就采用该种方法.


...   下一页
 ·《xml指南》下载[chm格式]    »显示摘要«
    摘要:写在前面的话 本文的英文版刊登在http://www.w3schools.com/xml/上,由blueidea的小奀将其译成中文。对xml 编码一节,原文已经不适合中文读者,于是做了一些修改,对于初学者来说这是一个很不错的入门教程。 如果您有什么疑问,请给小奀发e-mail:ordm@163.com。 下载地址:http://www.hsyj.pudong-edu.sh.cn/source......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE