基于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()方法。

高速公路路面管理系统由数据管理、养护办公、信息查询、电子地图、

系统管理等模块