王競 趙強 耿偉
(徐州醫(yī)學院,江蘇 徐州 221004)
Java Web技術由于其良好的可移植性和安全性得到了廣泛的應用;而Struts框架在Java Web應用的開發(fā)中有相當大的用戶群,它已經成為最受歡迎的Java Web MVC模式框架。Struts對視圖層提供了豐富的標簽,這讓開發(fā)者只需使用少數的標簽,就可以實現需要較多HTML標記語言、腳本語言甚至是Java語言才能實現的界面功能。
全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)自1994年開考以來,考生人數逐年遞增。使用NCRE原有的C/S模式的考務系統(tǒng)進行報名,工作效率低下。當前,Internet的使用已經非常普遍。充分利用網絡資源,改變傳統(tǒng)的等級考試報名方式,進行網上報名,是一個可行的途徑,也是發(fā)展趨勢。
本文將就Struts Tiles在視圖開發(fā)中的優(yōu)勢進行研究分析,并將其應用到NCRE網上報名系統(tǒng)中。
2.1 Struts
MVC(Model-View-Controller)設計模式將Web服務劃分為模型、視圖、控制器三部分,將處理過程、業(yè)務邏輯、顯示邏輯分成不同的組件,實現了各模塊間的松耦合。Struts是Apache軟件基金下的Jakarta項目的一部分,是一種具體實現MVC模式的程序框架,其采用了Servlet和JSP技術來實現。
Struts的視圖主要由JSP文件組成。在這些JSP文件中沒有業(yè)務邏輯,也沒有模型信息,只有標簽,這些標簽可以是標準的JSP標簽或Struts標簽庫中的標簽。Struts提供了的Struts html標簽庫、Struts Bean標簽庫和Struts Logic標簽庫。這些標簽分別用于:生成HTML表單中元素;定義新的Bean或訪問已經存在的Java Bean以及它們的屬性;根據特定的邏輯條件來控制輸出網頁內容,或者循環(huán)遍歷集合中的所有元素。
2.2 Tiles
Tiles是Struts附帶的子框架。Tiles是功能強大的JSP模板框架,它能夠簡化顯示HTML代碼的重復使用。使用Tiles可以將JSP頁面分解為單個"Tiles"或部分,然后可將各部分粘合在一起創(chuàng)建一個組合頁面。在Struts 1.1之前,Tiles是第三方附加件,現在己經將Tiles包含在項目中與Struts緊密集成在一起。
Tiles框架為創(chuàng)建Web頁面提供了一種模板機制,它能將網頁的布局和內容分離,它允許先創(chuàng)建模板,然后在運行時動態(tài)地將內容插入到模板中,Tiles框架是建立在JSP的include指令基礎上的,但它提供了比JSP的include指令強大的功能。
3.1 界面設計需求
全國計算機等級考試網上報名工作分為兩個階段:一、是學生網上注冊階段,這一階段學生通過Internet進行信息預錄入,并取得相應的注冊號。二、是現場交費與信息確認階段,在此階段考務工作人員需要和考生共同核對報名信息。在第二階段,考務工作人員需要方便地查看并修改考生信息,確認信息無誤后,再進行報名交費的確認和回執(zhí)打印工作。為此,對NCRE網上報名系統(tǒng)的界面設計提出以下要求:
界面統(tǒng)一;簡潔大方;方便操作;能適合當前主流分辨率的顯示要求。同時要求功能菜單與主顯示區(qū)域的內容相關聯(lián)。
圖1 NCRE網上報名系統(tǒng)功能圖
3.2 應用實現
針對NCRE網上報名系統(tǒng)界面設計需求,采用如圖2所示的網頁布局。
圖2 典型的網頁布局
圖1顯示了NCRE網上報名系統(tǒng)的功能。
其中header和footer區(qū)域分別為頁頭和頁腳區(qū),一般變化不大;sidebar區(qū)域為功能菜單區(qū);content區(qū)域為內容區(qū),當在菜單區(qū)點擊不同的菜單時,content區(qū)域的內容會有相應的變化。
針對NCRE網上報名系統(tǒng)的界面,需要建立一個布局文件layout.jsp和分別對應各個區(qū)域的四組JSP文件。在實際的應用中每組JSP文件的名稱各不相同;為了便于描述,分別以header.jsp、sidebar.jsp、footer.jsp和content.jsp來標識四組JSP文件。
在布局文件layout.jsp中可以使用表格來對header、footer、sidebar和content四個區(qū)域進行頁面布局。在頁面相應的各表格代碼中,分別使用形如<tiles:insert attribute="content"/>的標簽進行占位。
在tiles-defs.xml文件中進行類似如下的定義:
以上所定義的"definitionA"代表一個完整的頁面,因此可以直接通過Struts Action來調用"definitionA"。這需要在Struts配置文件的<action-mappings>元素中作如下定義:
當然也可以通過額外建立一個JSP文件的方式來使用Tiles定義。在該JSP文件加入以下代碼:
通過Struts Action來調用Tiles定義,可以充分發(fā)揮Struts框架負責流程控制的功能,還可以減少JSP文件的數目。
開發(fā)一個應用時,往往要在應用的表示層上投入大量的精力和時間。在開發(fā)一個具有統(tǒng)一布局的界面時,應力求提高頁面代碼的可重用性。希望本文能給使用Struts的開發(fā)人員一些啟示;給擬開發(fā)NCRE網上報名系統(tǒng)的同行們一些思路。
[1]肖杰,陳翔,何海江,崔韶剛.基于AJAX和Struts的Web應用的設計與實現[J].計算機工程與設計,2009(8):1934-1937.
[2]孫衛(wèi)琴.精通 Struts:基于MVC的JavaWeb設計與開發(fā)[M].北京:電子工業(yè)出版社,2006
[3]吳四夫,鄧紅梅.StrutsTiles基于組件的開發(fā)[J].信息技術,2004(12):76-79.