王竞 赵强 耿伟
(徐州医学院,江苏 徐州 221004)
Java Web技术由于其良好的可移植性和安全性得到了广泛的应用;而Struts框架在Java Web应用的开发中有相当大的用户群,它已经成为最受欢迎的Java Web MVC模式框架。Struts对视图层提供了丰富的标签,这让开发者只需使用少数的标签,就可以实现需要较多HTML标记语言、脚本语言甚至是Java语言才能实现的界面功能。
全国计算机等级考试(National Computer Rank Examination,简称NCRE)自1994年开考以来,考生人数逐年递增。使用NCRE原有的C/S模式的考务系统进行报名,工作效率低下。当前,Internet的使用已经非常普遍。充分利用网络资源,改变传统的等级考试报名方式,进行网上报名,是一个可行的途径,也是发展趋势。
本文将就Struts Tiles在视图开发中的优势进行研究分析,并将其应用到NCRE网上报名系统中。
2.1 Struts
MVC(Model-View-Controller)设计模式将Web服务划分为模型、视图、控制器三部分,将处理过程、业务逻辑、显示逻辑分成不同的组件,实现了各模块间的松耦合。Struts是Apache软件基金下的Jakarta项目的一部分,是一种具体实现MVC模式的程序框架,其采用了Servlet和JSP技术来实现。
Struts的视图主要由JSP文件组成。在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或Struts标签库中的标签。Struts提供了的Struts html标签库、Struts Bean标签库和Struts Logic标签库。这些标签分别用于:生成HTML表单中元素;定义新的Bean或访问已经存在的Java Bean以及它们的属性;根据特定的逻辑条件来控制输出网页内容,或者循环遍历集合中的所有元素。
2.2 Tiles
Tiles是Struts附带的子框架。Tiles是功能强大的JSP模板框架,它能够简化显示HTML代码的重复使用。使用Tiles可以将JSP页面分解为单个"Tiles"或部分,然后可将各部分粘合在一起创建一个组合页面。在Struts 1.1之前,Tiles是第三方附加件,现在己经将Tiles包含在项目中与Struts紧密集成在一起。
Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离,它允许先创建模板,然后在运行时动态地将内容插入到模板中,Tiles框架是建立在JSP的include指令基础上的,但它提供了比JSP的include指令强大的功能。
3.1 界面设计需求
全国计算机等级考试网上报名工作分为两个阶段:一、是学生网上注册阶段,这一阶段学生通过Internet进行信息预录入,并取得相应的注册号。二、是现场交费与信息确认阶段,在此阶段考务工作人员需要和考生共同核对报名信息。在第二阶段,考务工作人员需要方便地查看并修改考生信息,确认信息无误后,再进行报名交费的确认和回执打印工作。为此,对NCRE网上报名系统的界面设计提出以下要求:
界面统一;简洁大方;方便操作;能适合当前主流分辨率的显示要求。同时要求功能菜单与主显示区域的内容相关联。
图1 NCRE网上报名系统功能图
3.2 应用实现
针对NCRE网上报名系统界面设计需求,采用如图2所示的网页布局。
图2 典型的网页布局
图1显示了NCRE网上报名系统的功能。
其中header和footer区域分别为页头和页脚区,一般变化不大;sidebar区域为功能菜单区;content区域为内容区,当在菜单区点击不同的菜单时,content区域的内容会有相应的变化。
针对NCRE网上报名系统的界面,需要建立一个布局文件layout.jsp和分别对应各个区域的四组JSP文件。在实际的应用中每组JSP文件的名称各不相同;为了便于描述,分别以header.jsp、sidebar.jsp、footer.jsp和content.jsp来标识四组JSP文件。
在布局文件layout.jsp中可以使用表格来对header、footer、sidebar和content四个区域进行页面布局。在页面相应的各表格代码中,分别使用形如<tiles:insert attribute="content"/>的标签进行占位。
在tiles-defs.xml文件中进行类似如下的定义:
以上所定义的"definitionA"代表一个完整的页面,因此可以直接通过Struts Action来调用"definitionA"。这需要在Struts配置文件的<action-mappings>元素中作如下定义:
当然也可以通过额外建立一个JSP文件的方式来使用Tiles定义。在该JSP文件加入以下代码:
通过Struts Action来调用Tiles定义,可以充分发挥Struts框架负责流程控制的功能,还可以减少JSP文件的数目。
开发一个应用时,往往要在应用的表示层上投入大量的精力和时间。在开发一个具有统一布局的界面时,应力求提高页面代码的可重用性。希望本文能给使用Struts的开发人员一些启示;给拟开发NCRE网上报名系统的同行们一些思路。
[1]肖杰,陈翔,何海江,崔韶刚.基于AJAX和Struts的Web应用的设计与实现[J].计算机工程与设计,2009(8):1934-1937.
[2]孙卫琴.精通 Struts:基于MVC的JavaWeb设计与开发[M].北京:电子工业出版社,2006
[3]吴四夫,邓红梅.StrutsTiles基于组件的开发[J].信息技术,2004(12):76-79.