摘 要:論述J2EE技術(shù)在構(gòu)架數(shù)字城市網(wǎng)站發(fā)布系統(tǒng)中的應(yīng)用思路,通過(guò)J2EE多層體系結(jié)構(gòu)對(duì)系統(tǒng)劃分層次,可以克服傳統(tǒng)的網(wǎng)站發(fā)布系統(tǒng)的缺點(diǎn)。在充分利用數(shù)據(jù)庫(kù)技術(shù)和網(wǎng)絡(luò)技術(shù)的基礎(chǔ)上,采用第二代Web發(fā)布機(jī)制,提供真正的動(dòng)態(tài)內(nèi)容管理方式,從而既簡(jiǎn)化系統(tǒng)的設(shè)計(jì)步驟,也為程序員提供靈活的設(shè)計(jì)構(gòu)架,同時(shí)提高系統(tǒng)的運(yùn)行效率。最后借助于一個(gè)在此構(gòu)架之下已經(jīng)開(kāi)發(fā)完成的數(shù)字城市網(wǎng)站,展示了這種構(gòu)架技術(shù)所具有的通用性、可伸縮性和可移植性等特點(diǎn)。
關(guān)鍵詞:數(shù)字城市;Java;J2EE;動(dòng)態(tài)網(wǎng)站設(shè)計(jì);網(wǎng)站發(fā)布系統(tǒng)
中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)08-147-03
Application and Practice of J2EE Technology in the Framework of
Digital City Website Publishing System
WEI Yanjun,SHEN Hong
(Computer Teaching Experiment Center,Xi′an Jiaotong University,Xi′an,710049,China)
Abstract:J2EE technology is discussed in the framework of digital city website publishing system,through J2EE multitier architecture to overcome shortcomings of the traditional system,while making full use of database and network technology and using secondgeneration web publishing mechanism to provide real dynamic content management,and thus simplifies the system design steps,as well as provides programmers with a flexible framework implement,and improves the system′s operating efficiency.With a case of the digital city website under this framework,it reveales the framework technology is of generic,scalability and portability features.
Keywords:digital city;Java;J2EE;dynamic site design;website publishing system
1 數(shù)字城市與數(shù)字城市網(wǎng)站系統(tǒng)概述
與城市一般建設(shè)相對(duì)應(yīng),數(shù)字城市立足于當(dāng)前城市的信息化建設(shè),已經(jīng)成為城市現(xiàn)代化發(fā)展戰(zhàn)略的重要組成部分。數(shù)字城市的定義范圍較廣,從廣義上講,數(shù)字城市即城市信息化,指通過(guò)建設(shè)寬帶多媒體信息網(wǎng)絡(luò)、地理信息系統(tǒng)等基礎(chǔ)設(shè)施平臺(tái),整合城市信息資源,實(shí)現(xiàn)城市經(jīng)濟(jì)信息化,建立城市電子政府、電子商務(wù)企業(yè)和電子社區(qū);并通過(guò)發(fā)展信息家電、遠(yuǎn)程教育和網(wǎng)上醫(yī)療,建立信息化社區(qū)。數(shù)字城市不僅涉及到網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、信息系統(tǒng)、政策法規(guī)和保障體系等各種信息化基礎(chǔ)設(shè)施的建設(shè),而且還涉及到信息化過(guò)程中所產(chǎn)生的社會(huì)經(jīng)濟(jì)關(guān)系和文化倫理觀念的變化與調(diào)整。從狹義上講,數(shù)字城市是指在理論的指導(dǎo)下,基于3S(地理信息系統(tǒng)GIS、全球定位系統(tǒng)GPS和遙感系統(tǒng)RS)等關(guān)鍵技術(shù),深入開(kāi)發(fā)和應(yīng)用空間信息資源,建設(shè)服務(wù)于城市規(guī)劃、城市建設(shè)和管理,服務(wù)于政府、企業(yè)和公眾,服務(wù)于人口、資源環(huán)境和經(jīng)濟(jì)社會(huì)的可持續(xù)發(fā)展的信息基礎(chǔ)設(shè)施和信息系統(tǒng),從而建設(shè)空間信息基礎(chǔ)設(shè)施并在此基礎(chǔ)上深度開(kāi)發(fā)和整合應(yīng)用各種信息資源。從技術(shù)層面上還可將數(shù)字城市定義為以空間信息為核心的城市信息系統(tǒng)體系。
為了展現(xiàn)城市風(fēng)采,實(shí)現(xiàn)市政信息資源的共享,更有利于為公眾服務(wù)和方便政府的網(wǎng)上辦公,建設(shè)一流的數(shù)字城市網(wǎng)站是必不可少的數(shù)字城市建設(shè)內(nèi)容。一個(gè)數(shù)字城市網(wǎng)站應(yīng)具有如下一些典型功能:城市概況、城市向?qū)А⒄?wù)信息、市民生活、社會(huì)保障、企業(yè)之窗、人才招聘、法律警務(wù)、新聞?lì)l道、文化體育、娛樂(lè)導(dǎo)視、美食天地、旅游交通、招生培訓(xùn)、財(cái)經(jīng)信息、房產(chǎn)動(dòng)態(tài)、今日焦點(diǎn)、最新要聞、圖片報(bào)道和綜合新聞等。因此需要制作大量的網(wǎng)頁(yè),目前大多數(shù)網(wǎng)站均采用某種發(fā)布工具完成此項(xiàng)任務(wù)以減少工作量,但存在著一個(gè)突出的問(wèn)題,就是網(wǎng)站的維護(hù)工作主要是由網(wǎng)站的維護(hù)人員進(jìn)行一些基本的內(nèi)容替換和簡(jiǎn)單的網(wǎng)頁(yè)格式調(diào)整,面對(duì)網(wǎng)站布局呆板,不易變更和動(dòng)態(tài)性差等弱點(diǎn),網(wǎng)站程序設(shè)計(jì)人員束手無(wú)策,無(wú)法進(jìn)行靈活和全方位的再構(gòu)造。而將J2EE技術(shù)應(yīng)用于網(wǎng)站發(fā)布系統(tǒng)中,就可以解決這些問(wèn)題。
2 J2EE技術(shù)在構(gòu)架數(shù)字城市網(wǎng)站發(fā)布系統(tǒng)中的應(yīng)用優(yōu)勢(shì)
目前建立網(wǎng)站的技術(shù)有多種,比如:HTML,ASP,PHP和Python等,而J2EE是當(dāng)前首屈一指的非常成熟的面向多層應(yīng)用的網(wǎng)絡(luò)分布式技術(shù), 他既可以用于構(gòu)建各種企業(yè)應(yīng)用系統(tǒng),也可以開(kāi)發(fā)網(wǎng)站系統(tǒng)。J2EE除了繼承Java的簡(jiǎn)單性、跨平臺(tái)性和安全性等諸多特點(diǎn)之外,還提供了像JDBC數(shù)據(jù)庫(kù)技術(shù)、RMI和Java IDL分布式技術(shù)、XML可擴(kuò)展描述語(yǔ)言的支持、Servlet\\\\JSP Web應(yīng)用技術(shù)、JavaBeans組件和EJB分布式組件等技術(shù)。目前最流行的幾個(gè)Web企業(yè)應(yīng)用服務(wù)器(像Apache,Tomcat,JBoss,Hibernate,Weblogic,Websphere,OAS,BES和SunOne等)都是J2EE的典型運(yùn)行環(huán)境,構(gòu)建企業(yè)系統(tǒng)和網(wǎng)站中選擇J2EE技術(shù)的最大優(yōu)勢(shì)就在于此。
所謂MVC模型,既將企業(yè)系統(tǒng)分為模型(即數(shù)據(jù)表示層)、視圖(即顯示層)和控制(即業(yè)務(wù)邏輯層)3個(gè)層次,而將J2EE技術(shù)和MVC三層應(yīng)用框架模型相結(jié)合,使得企業(yè)系統(tǒng)層次更加分明,從MVC技術(shù)細(xì)節(jié)可以對(duì)系統(tǒng)進(jìn)行如下3層分解:
數(shù)據(jù)表示層 使用LDAP,Database,JDBC,JNDI、對(duì)象序列化等技術(shù);
業(yè)務(wù)邏輯層 使用EJB,JavaBeans,JSF等技術(shù);
顯示層 使用Applet,JSP,Servlet,HTML,XML,JavaScript等技術(shù)。
圖1說(shuō)明了J2EE計(jì)算模式中所體現(xiàn)的MVC三層模型之間的關(guān)系。
圖1 J2EE計(jì)算模式與MVC三層模型之間的關(guān)系
在圖1中,業(yè)務(wù)邏輯層的EJB,JavaBeans,JSF通過(guò)JDBC,JNDI、對(duì)象序列化等技術(shù)去訪問(wèn)數(shù)據(jù)表示層中的LDAP數(shù)據(jù)或數(shù)據(jù)庫(kù),并通過(guò)顯示層中的JSP,Servlet技術(shù)生成Applet,HTML,XML,JavaScript等格式的內(nèi)容,最后通過(guò)瀏覽器顯示出來(lái)。J2EE應(yīng)用服務(wù)器可以有多種選擇,整個(gè)系統(tǒng)具有跨平臺(tái)的特點(diǎn),可以構(gòu)架在目前流行的多種計(jì)算機(jī)系統(tǒng)之中,比如Unix,Linux和Windows等。
3 數(shù)字城市網(wǎng)站發(fā)布系統(tǒng)的通用構(gòu)架技術(shù)
采用“數(shù)據(jù)庫(kù)+模板→靜態(tài)頁(yè)面”的第二代動(dòng)態(tài)網(wǎng)站發(fā)布機(jī)制,以便解決過(guò)去的發(fā)布機(jī)制中每次用戶(hù)訪問(wèn)都要連接數(shù)據(jù)庫(kù)而導(dǎo)致的數(shù)據(jù)庫(kù)訪問(wèn)瓶頸等問(wèn)題;系統(tǒng)可以自動(dòng)生成靜態(tài)頁(yè)面供用戶(hù)訪問(wèn),因此大大提高用戶(hù)訪問(wèn)網(wǎng)站的響應(yīng)速度,融合了數(shù)據(jù)庫(kù)的靈活、安全和靜態(tài)頁(yè)面的快速的特點(diǎn),能夠適應(yīng)大型門(mén)戶(hù)網(wǎng)站的大信息量和大用戶(hù)量的環(huán)境。與圖1中J2EE計(jì)算模式相對(duì)應(yīng),發(fā)布系統(tǒng)也采用三層應(yīng)用構(gòu)架,如下圖2所示。
圖2 數(shù)字城市網(wǎng)站發(fā)布系統(tǒng)的三層應(yīng)用構(gòu)架
在圖2中,由網(wǎng)站設(shè)計(jì)人員完成內(nèi)容編輯,并由發(fā)布系統(tǒng)維護(hù)人員根據(jù)具體網(wǎng)站提供的參數(shù)數(shù)據(jù)完成模板管理和網(wǎng)站管理功能,存入數(shù)據(jù)庫(kù)中;通過(guò)發(fā)布系統(tǒng)完成這些內(nèi)容的合成處理,并生成HTML,XML和JavaScript等格式的靜態(tài)網(wǎng)頁(yè),部署到Web應(yīng)用服務(wù)器相關(guān)目錄之中,供用戶(hù)通過(guò)瀏覽器進(jìn)行訪問(wèn)。
基于以上的技術(shù)和構(gòu)架,并結(jié)合一般數(shù)字城市的典型功能,對(duì)系統(tǒng)的三層應(yīng)用框架進(jìn)行如下的技術(shù)實(shí)現(xiàn)。
(1) 數(shù)據(jù)庫(kù)的建立
考慮到系統(tǒng)的開(kāi)放性,首選MySQL數(shù)據(jù)庫(kù)管理系統(tǒng),構(gòu)建頻道表、欄目表、文章表、廣告表、頁(yè)面配置表和用戶(hù)表等數(shù)據(jù)庫(kù)表。具體功能如下:
頻道表和欄目表除了描述編號(hào)和名稱(chēng)信息之外,還記錄其首頁(yè)所在的目錄和首頁(yè)文件名稱(chēng);
文章表和廣告表中將文章按內(nèi)容分類(lèi),在內(nèi)容上可以存放超鏈接、可下載文件、以及多個(gè)文本文件、圖片、動(dòng)畫(huà)、聲音文件的組合體;
頁(yè)面配置表用于對(duì)頁(yè)面中的標(biāo)題、字體、顏色、背景和式樣等進(jìn)行設(shè)置和管理;
用戶(hù)表按級(jí)別存放各種用戶(hù)信息。
為了簡(jiǎn)化復(fù)雜的網(wǎng)頁(yè)內(nèi)容的組織,在數(shù)據(jù)庫(kù)中還設(shè)計(jì)了一些視圖和存儲(chǔ)過(guò)程,專(zhuān)門(mén)用于將數(shù)據(jù)庫(kù)中的數(shù)據(jù)自動(dòng)轉(zhuǎn)換為網(wǎng)頁(yè)格式的內(nèi)容,比如按日期和重要程度對(duì)文章分類(lèi)時(shí),可以建立如下視圖:
CREATE VIEW articlesview as
SELECT
CONCAT(′
′article=′,id,′\">′,title,′
AS href,
menuid,itemid
FROM articletable
ORDER BY levels,releasedate
當(dāng)取得最新5條新聞時(shí),可以建立如下存儲(chǔ)過(guò)程:
CREATE PROCEDURE lasttop5articleprocedure
(IN menuid2 SMALLINT,IN itemid2 SMALLINT)
BEGIN
SELECT
CONVERT(CONCAT(′
′article=′,id,′\">′,title,′
FROM articletable
WHERE menuid=menuid2 AND itemid=itemid2
ORDER BY levels,releasedate
LIMIT 5 OFFSET 0;
END;
(2) 業(yè)務(wù)邏輯的建立
建立JNDI數(shù)據(jù)源以及數(shù)據(jù)庫(kù)接口類(lèi)、數(shù)據(jù)庫(kù)連接類(lèi)、數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)、JavaBeans類(lèi)和用于較復(fù)雜的計(jì)算的EJB,從而大大簡(jiǎn)化網(wǎng)頁(yè)內(nèi)容的靜態(tài)和動(dòng)態(tài)組織的復(fù)雜性,以便于系統(tǒng)的擴(kuò)充。
為了支持常用的各種類(lèi)型的關(guān)系數(shù)據(jù)庫(kù),設(shè)計(jì)了數(shù)據(jù)庫(kù)接口類(lèi)和數(shù)據(jù)庫(kù)連接類(lèi),便于封裝連接數(shù)據(jù)庫(kù)的參數(shù)和方法,并通過(guò)JNDI技術(shù)建立各種數(shù)據(jù)庫(kù)源。數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)封裝常用的訪問(wèn)數(shù)據(jù)庫(kù)的增刪改查等方法。JavaBeans類(lèi)封裝動(dòng)態(tài)網(wǎng)頁(yè)所需要的結(jié)果。EJB主要用于LDAP數(shù)據(jù)的訪問(wèn)以及完成與傳統(tǒng)系統(tǒng)的接口等。
(3) JSP頁(yè)面的建立
根據(jù)系統(tǒng)提供的網(wǎng)站模板和靜態(tài)網(wǎng)頁(yè),建立動(dòng)態(tài)內(nèi)容所需要的JSP代碼,這些JSP代碼訪問(wèn)數(shù)據(jù)庫(kù)取得和修改數(shù)據(jù)。舉例如下:
網(wǎng)站首頁(yè)放在digitalcity/,首頁(yè)文件名為index.jsp,其內(nèi)容在網(wǎng)頁(yè)設(shè)計(jì)好以后,由程序員通過(guò)網(wǎng)站發(fā)布平臺(tái)進(jìn)行少許的代碼編寫(xiě)。以下代碼用于生成導(dǎo)航條:
<%
DBAccesserByHTML dbabh=new DBAccesserByHTML();
String order[]=dbabh.getAllMenuName();
%>
針對(duì)網(wǎng)頁(yè)中各個(gè)頻道標(biāo)題和內(nèi)容放置的位置,可以將以下代碼:
<%=order[i] %>和<%=dbabh.getAllMenuArticleInfo(i) %>分別放在指定(第i個(gè))的頻道標(biāo)題和內(nèi)容位置。
各頻道文件放在各自的目錄(digitalcity/?),首頁(yè)文件名均為index.jsp。
4 一個(gè)采用構(gòu)架技術(shù)的數(shù)字城市網(wǎng)站系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)案例
作者在本文提出的構(gòu)架技術(shù)平臺(tái)下實(shí)現(xiàn)了某中型城市的數(shù)字城市網(wǎng)站系統(tǒng)。起初以動(dòng)態(tài)網(wǎng)站的方式運(yùn)行,后來(lái)發(fā)現(xiàn)在訪問(wèn)數(shù)據(jù)庫(kù)和Web服務(wù)器中出現(xiàn)嚴(yán)重的訪問(wèn)效率和吞吐量等問(wèn)題,使用該構(gòu)架技術(shù)平臺(tái)可以大大緩解這個(gè)矛盾。某中型城市的數(shù)字城市網(wǎng)站系統(tǒng)的用戶(hù)需求主要有以下幾個(gè)方面:
(1) 實(shí)現(xiàn)門(mén)戶(hù)網(wǎng)站的內(nèi)容維護(hù)、業(yè)務(wù)處理和頁(yè)面表現(xiàn)維護(hù)的分離。
(2) 支持用戶(hù)對(duì)網(wǎng)站的欄目結(jié)構(gòu)、各欄目的具體內(nèi)容項(xiàng)、各欄目的層級(jí)分類(lèi)等信息進(jìn)行自定義和自由擴(kuò)展。
(3) 為用戶(hù)提供靈活方便的Web頁(yè)面編輯功能,使用戶(hù)能夠直接在瀏覽器上完成頁(yè)面的字體、字號(hào)、顏色等顯示屬性的編輯定義。
(4) 提供界面友好,易學(xué)易用的圖形化工作界面。
(5) 數(shù)據(jù)采用集中管理的方式,各信息點(diǎn)的交易信息實(shí)時(shí)匯總到數(shù)據(jù)中心進(jìn)行處理。
(6) 保證網(wǎng)絡(luò)交易數(shù)據(jù)和網(wǎng)絡(luò)交易過(guò)程的安全。
(7) 具有良好的容錯(cuò)性能,未完成的交易必須回退到原始狀態(tài),操作錯(cuò)誤要有清晰明確的提示。
(8) 提供安全可靠的備份方式,交易數(shù)據(jù)保存不小于3年。
在不考慮交易功能的情況下,信息查詢(xún)功能劃分如下:
城市新聞、廣告、天氣預(yù)報(bào)、政務(wù)信息、城市向?qū)?、社?huì)保障、文體娛樂(lè)、招生培訓(xùn)、市場(chǎng)行情、旅游信息、房產(chǎn)信息、交通信息、人才招聘、勞務(wù)信息、生活常識(shí)、衛(wèi)生與健康、導(dǎo)視、美食(餐飲指南、預(yù)訂)、法律和警務(wù)等等。
首先根據(jù)以上功能將網(wǎng)頁(yè)劃分為多個(gè)頻道、欄目和文章,通過(guò)發(fā)布系統(tǒng)將相關(guān)參數(shù)和數(shù)據(jù)入庫(kù);然后由網(wǎng)頁(yè)設(shè)計(jì)人員根據(jù)用戶(hù)提供的網(wǎng)頁(yè)模板設(shè)計(jì)靜態(tài)網(wǎng)頁(yè);最后再通過(guò)發(fā)布系統(tǒng)提供的特殊編輯器進(jìn)行JSP,Servlet等的設(shè)計(jì),生成靜態(tài)網(wǎng)頁(yè)并發(fā)布到Web服務(wù)器中。
這里將主要的幾個(gè)內(nèi)容,像頻道、欄目和文章劃分為如表1、表 2和表 3所示:
表1 頻道[HT6K]
編號(hào)名稱(chēng)代號(hào)目錄首頁(yè)
0首頁(yè)homeindex.jsp
1城市概況csgkcsgk/index.jsp
2城市向?qū)sxdcsxd/index.jsp
3政務(wù)信息zwxxzwxx/index.jsp
……………[HJ0]
表2 欄目[HT6K]
頻道編號(hào)編號(hào)名稱(chēng)代號(hào)
10城市概況csgk
11城市歷史csls
12地理位置dlwz
20城市地圖csdt
21公交線路gjxl
22景點(diǎn)概況jdgk
…………[HJ0]
表3 文章[HT6K]
頻道編號(hào)欄目編號(hào)編號(hào)標(biāo)題副標(biāo)題內(nèi)容格式作者發(fā)布日期類(lèi)別級(jí)別目錄來(lái)源關(guān)鍵詞
程序方面的設(shè)計(jì)框架如第3部分的介紹。
5 結(jié) 語(yǔ)
設(shè)計(jì)一個(gè)良好的網(wǎng)站發(fā)布系統(tǒng),是構(gòu)建企業(yè)網(wǎng)站的捷徑,作者研制的發(fā)布系統(tǒng)盡管最初是針對(duì)數(shù)字城市網(wǎng)站方面而設(shè)計(jì)的,但也適合于一般新聞網(wǎng)站。他比傳統(tǒng)的發(fā)布系統(tǒng)主要有2個(gè)突出的優(yōu)點(diǎn):使用目前流行的Java語(yǔ)言和J2EE技術(shù),具有可移植性;通過(guò)發(fā)布為靜態(tài)網(wǎng)頁(yè),大大緩解了對(duì)數(shù)據(jù)庫(kù)的頻繁訪問(wèn),提高了Web服務(wù)器的整體性能。
參 考 文 獻(xiàn)
[1]王家耀.關(guān)于我國(guó)電子政務(wù)與數(shù)字城市建設(shè)的思考\\[J\\].測(cè)繪科學(xué),2005,30(1):35.
[2]段學(xué)軍,顧朝林,甄峰,等.數(shù)字城市的概念、框架與應(yīng)用\\[J\\].現(xiàn)代城市研究,2001(3):6164.
[3]李琦.數(shù)字城市若干理論問(wèn)題探討\\[J\\].地理與地理信息科學(xué),2003,19(1):3236.
[4]Jason Hunter,William Crawford.Java Servlet Programming\\[M\\].2nd Edition.O′Reilly,2001.
[5]Richard Monson Haefel.Enterprise JavaBeans\\[M\\].3rd Edition.O′Reilly,2001.
[6]劉雅麗.數(shù)字城市概述\\[A\\].城市科學(xué)論集\\[C\\].2004.
[7]姜愛(ài)林.數(shù)字城市:基本框架、發(fā)展現(xiàn)狀、存在問(wèn)題與建議2003年數(shù)字城市研究若干問(wèn)題概述\\[J\\].南寧職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004.[HJ0]
作者簡(jiǎn)介 衛(wèi)顏俊 男,計(jì)算機(jī)工學(xué)碩士,西安交通大學(xué)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心教師。多次擔(dān)任多個(gè)計(jì)算機(jī)軟件項(xiàng)目開(kāi)發(fā)工作的主要負(fù)責(zé)人。編寫(xiě)過(guò)多本教材,其中兩本為十一五規(guī)劃教材。為國(guó)家級(jí)教學(xué)團(tuán)隊(duì)、國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心以及“軟件技術(shù)基礎(chǔ)”國(guó)家級(jí)精品課程的骨干教師。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文