基于Struts框架和AjaxTags技术的Web应用
- 格式:pdf
- 大小:252.15 KB
- 文档页数:7
http://www.paper.edu.cn
-1- 基于Struts框架和AjaxTags技术的Web应用设计与
实现
琚建飞,杨春金
武汉理工大学信息工程学院,武汉(430063)
E-mail:afeijjf2000@163.com
摘 要:Struts为Java Web应用提供了通用的框架,是当前Java Web应用程序开发中最为
流行的框架之一。AjaxTags是将常用的Ajax应用封装成简单的标签,通过使用AjaxTags,
程序员可以像使用普通标签一样来获得Ajax功能。本文简要介绍了Struts和AjaxTags,就
如何结合Struts和AjaxTags进行Web应用程序开发进行重点阐述,并结合一个实例讨论如
何设计基于Struts框架和AjaxTags技术的Web应用。
关键词:MVC,Struts,AjaxTags
中图分类号:TP311
1.引言
MVC(Model-View-Controller)设计模式将页面显示、业务逻辑和数据处理相分离,最大
限度的降低系统各部分之间的耦合性,从而增强系统的可扩展性和维护性,提高代码重用率,
使系统的层次结构更加清晰,易于分工协作。Struts为Java Web应用提供了MVC框架,尤其适
用于开发大型可扩展的Web应用。Struts框架提供了许多可扩展和定制的地方,使得应用程
序可以方便地扩展框架,从而更好地适应用户的实际需求。传统的Web应用模型是工作机制
是界面上的用户动作触发一个Http请求,服务器收到请求后完成相应处理后,返回一个
HTML页面到客户端。通过使用Ajax技术,可以达到更好的用户体验。而AjaxTags是由一系列
的JSP标签组成的,通过这些标签可以简化Ajax应用的开发。在Web应用程序开发中,结合
使用Struts和AjaxTags,既可以提高系统开发速度和系统质量,又可以增强界面交互性。
2.Struts框架
2.1 Struts体系结构
Struts实质上就是在JSP Model2的基础上实现的一个MVC框架。在Struts框架中,模
型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action实现,视
图由JSP文件构成。图1[1]
显示了Struts实现的MVC框架。
(控制器)
ActionServlet
(视图)
JSP Web
服务器 Struts-config.xml
Action
Action
Action (模型)
JavaBean
EJB 浏览器 Servlet/JSP容器
图1 Struts实现的MVC框架 http://www.paper.edu.cn
-2- 2.2 组件介绍
下面分别从视图、模型、控制器和Struts的配置文件struts-config.xml来介绍Struts的
体系结构。
⑴视图:主要由JSP文件建立,在JSP文件中,只有标签,这些标签可以是标准的JSP
标签或客户化标签,如自定义标签,Struts标签库中的标签,AjaxTags标签等。通常把Struts
框架中的ActionForn Bean也划分到视图中。
⑵模型:表示应用程序的状态和业务逻辑。状态主要由实体JavaBean或实体EJB体现,
业务逻辑通常由业务逻辑JavaBean或会话EJB组件实现。
⑶控制器:主要由ActionServlet类和Action类来实现,ActionServlet类是Struts框架中的
核心组件,主要负责接收HTTP请求信息。根据配置文件struts-config.xml的配置信息,把请
求转发合适的Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用
程序的流程。在本文中,为了实现Struts和AjaxTags的整合,将增加一个继承了Action类的抽
象类
BaseAjaxAction。
⑷配置文件struts-config.xml:当ActionServlet接收HTTP请求信息时,如何决定把用户请
求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息。
在Struts中,这些配置映射信息都存储在特定的XML文件Struts-config.xml中,在该配置文件
中,每一个Action的映射信息都通过一个元素来配置。这些配置信息在系统启动时
会被读入内存,供Struts在运行期间使用,在内存中,每一个元素对应一个
ActionMapping类的实例[1]
。
3.AjaxTags
AjaxTags是一套简单的JSP标签,这套标签以一些现有的开源的开源项目为基础,将常
用的Ajax应用封装成简单的标签。AjaxTags最核心部分是Prototype.js库及相关项目
Scriptaculous.js。 当然,JSTL和jakarta-commons的一些包也是AjaxTags所必需的。AjaxTags
完全不需要开发者写一行JavaScript代码,它以一种“非常Java的方式”来开发Ajax应用。
通过使用AjaxTags,程序员可以像使用普通标签一样来获得Ajax功能[2]
。目前,最新版
AjaxTags主要包括:Auto-Complete、Tree、Select/Dropdown、Tab Panel等13中标签。
4.系统设计与实现
本文以实验室在研项目——高速公路路面管理系统为背景,阐述基于Struts框架和
AjaxTags技术的Web应用设计与实现。开发工具为MyEclipse+Dreamweaver+相关插件。
4.1 视图组件
视图组件由JSP文件组成。在高速公路路面管理系统中,某些页面对交互性要求比较高。
比如:病害树的建立,数据联动,数据自动选填,数据分页显示等。这些功能可以采用AjaxTags
快速实现。在使用AjaxTags标签的,需要在JSP文件中加入AjaxTags必须的js文件和css
文件的引用,比如:prototype.js、scriptaculous.js、ajaxtags.js、ajaxtags.css、displaytag.css等
等,引用方式以下面代码为例:
......
-3- />
......
当然,最好的方法是把所有JSP的公共应用放在一个JSP文件中,再在其它JSP文件采
用include指令包含这个JSP文件。下面实现数据自动选填功能,在JSP页面上采用的标签
代码,与之对应的控制层和模型层代码将在后面部分介绍:
baseUrl="AutoComplete.do" className="autocomplete"
indicator="indicator" minimumCharacters="1" />
说明:source属性指定的HTML元素的值一旦发生改变,就将发送Ajax请求。该属性的文
本将作为自动完成的前缀部分;Target属性指定一个文本框,该文本框将显示自动完成的选
择项对应的value ;baseUrl处的服务器响应将返回一个满足条件的XML响应,baseUrl的
属性值必须在struts-config.xml文件中配置;className属性指定了自动完成所提供的下拉框
的CSS样式单的名字;indicator属性指定一个HTML元素,该元素在Ajax请求开始时出现,
随着Ajax交互完成而隐藏。该元素可以通知用户Ajax交互的进度;minimumCharacters属
性指定完成自动选择功能最少所需的字符数。上述属性只是其中的一部分,属性的选择可以
根据需求添加。下面给出的是演示图片:
图2 输入一个字后效果 图3 选择后完成自动选添功能
4.2 控制器组件
Struts控制器组件主要包括:ActionServlet组件,充当Struts框架的中央控制器;
RequestProcessor组件,充当每个子应用模块的请求控制器;Action组件,负责处理一项具
体的业务。Servlet容器在启动时,或者用户首次ActionServlet,Servlet容器都会在
ActionServlet被加载后立即执行它的init()。当ActionServlet实例接受到HTTP请求后,在
doGet()或doPost()方法中都会调用process()方法来处理请求。在process()方法中,首先调用
ModuleUtils类的selectModule ()方法,这个方法选择负责处理当前请求的子应用模块,然后
把与子应用模块相关的ModuleConfig和MessageResources对象存储到request范围中,这使
得框架的其余组件可以方便地从request范围中读取这些对象,获取相应的应用配置信息和
消息资源。接着process()方法获得RequestProcessor类的实例,然后调用RequestProcessor
类的process()方法,完成实际的预处理请求操作。在RequestProcessor类的process()方法中,
创建Action实例,并调用Action实例的execute()方法。
高速公路路面管理系统由数据管理、养护办公、信息查询、电子地图、
系统管理等模块