第一章緒論 1
1.1引言 1
1.2開發內容管理系統的重要意義 1
1.3內容管理系統的國內外發展現狀 2
1.4本文研究的內容及所作的工作 3
第二章J2EE技術規范 4
2.1J2EE總體概述 4
2.1.1J2EE 的發展 4
2.1.2J2EE 的優勢 4
2.1.3J2EE應用程序的結構 5
2.2基于J2EE的WEB應用解決方案 6
2.2.1基于B/S的多層分布式結構 6
2.2.2J2EE Web應用多層結構 8
2.2.3基于J2EE的多層Web應用實現方法及比較 9
2.3J2EE核心技術 10
2.3.1組件技術 10
2.3.2服務技術 14
2.3.3通信技術 18
第三章數據庫通信和連接池技術 21
3.1JDBC 技術 21
3.2訪問數據庫 23
3.3幾種不同的連接方式 25
3.4連接池技術 25
3.4.1數據庫連接池技術的原理 25
3.4.2工作機制 26
第四章內容管理系統的分析與設計 30
4.1系統的需求分析 30
4.2系統的目標 31
4.2.1系統的性能指標 31
4.2.2系統的功能指標 32
4.3系統的總體設計 33
4.3.1系統的結構 33
4.3.2網絡拓撲結構 34
4.4系統的數據結構設計 35
4.4.1數據庫設計原則 35
4.4.2主要表結構 36
4.5系統詳細設計 39
4.5.1身份驗證與授權模塊的設計 39
4.5.2類別管理模塊設計 42
4.5.3用戶管理模塊設計 45
4.5.4新聞管理模塊設計 46
4.5.5商務信息管理模塊設計 47
第五章內容管理系統的實現 49
5.1系統開發平臺的建立 49
5.1.1數據庫的選擇 49
5.1.2開發語言和工具的選擇 51
5.2數據庫連接池的設計與實現 54
5.2.1總體實現 54
5.2.2貝體過程實現 54
5.3系統主要功能模塊的實現 55
5.3.1身份驗證模塊的實現 58
5.3.2類別管理模塊的實現 59
5.3.3用戶管理模塊的實現 63
5.3.4新聞管理模塊的實現 65
5.3.5商務信息模塊的實現 69
5.4關鍵技術 71
5.4.1數據庫優化技術 71
5.4.2組件技術 72
5.4.3安全技術 72
第六章總結與展望 73
6.1總結 73
6.2進一步研究 73
參考文獻 75
致 謝 77
作者簡歷 78
第一章緒論
1.1引言
中國實施政府上網工程以來,電子政務的內網和外網建設成為政府上網工程的熱點。企業也 開始建立網站用以實現企業信息化、電子商務、宣傳企業形象等。目前國內政界和商界的信息化 發展很快,但同時也存在一些問題,國內約有1/3的網站難以打開,約有1/3的網站應用價值比 較低,還有相當數量的網站存在網站建設困難、信息更新不及時、服務功能不健全、發布的消息 無時效價值等現象。例如:根據需要突然增加個欄目,可是卻需要美工人員來設計,專業人員來 編碼,整個過程相當復雜;只是想修改一下欄目的名稱,需要改動幾個字,居然會花費一天的時 間,甚至需要專業人員修改;維護網站,不得不聘了大量網頁制作人員,網站的維護成本太高; 當你管理著外網或者內網時,欄目一個個增加,需要發布的信息越來越多時,發現讓網站的內容 保持更新成為一件棘手的事情。等等這些問題的存在對網站的發展造成了制約。采用網站內容管 理系統就能很好的解決上述問題,它是一個很好的管理平臺和發布平臺,提供直接的接口給管理 或業務人員;其通過對機構中各種類型的數據資產的產生、管理、增值和再利用,增加了內容的 價值,快速廉價的內容更新,并提高準確度,降低信息獲取的開銷。為技術創新提供支持,改善 組織的運行效率和提高企業的競爭能力。
內容管理由兩部分組成,“內容”強調對象,“管理”強調方法。什么是內容?內容是任何類 型的數字信息的結合體,可以是文本、圖形圖像、Web頁面、業務文檔、數據庫表單、視頻、聲 音文件等。應該說,內容是一個比數據、文檔和信息更廣的概念,是對各種結構化數據、非結構 化文檔、信息的聚合,這在某種程度上也包含了知識。什么是管理?管理就是施加在“內容”對 象上的一系列處理過程,包含收集、確認、批準、整理、定位、轉換、分發、更新和存檔等,目 的是為了使“內容”能夠在正確的時間、以正確的形式傳遞到正確的地點和人。
內容管理可以定義為:協助組織和個人,借助信息技術,實現內容的創建、存儲、分享、應 用和更新,并在企業個人、組織、業務、戰略等諸方面產生價值的過程。而內容管理系統就是能 夠支撐內容管理的一種工具或一套工具的組合。
網站內容管理系統不僅是一種可以建設網站,管理網絡資源的工具,更是一種高效的信息發 布系統。
1.2開發內容管理系統的重要意義
隨著Internet的快速發展,內容管理已成為所有Web應用的基礎。從電子政府、企業信息化、 綜合性網站,到垂直門戶、數字圖書館、遠程教育、遠程醫療,乃至所有的電子商務應用,都是 圍繞內容的采集、創建、存儲、管理、發布、檢索和服務,這是用戶核心的需求。提高內容管理 的效率和質量,可以從以下幾個方面帶來好處:
1、 用戶能夠方便的搭建網站、增加欄目、修改欄目的屬性或者決定發布的內容,以及方便 的管理系統的信息。
2、 用戶已經習慣于從企業的網站上了解最新的產品和服務信息。保證網站上信息的及時更 新是企業進行市場工作的必要組成部分。
3、 用戶逐漸地產生個性化內容的需求,特別是企業面向大量的顧客時,用戶希望看到的內 容是經過定制的,動態地進行個性化的。
4、 企業越來越依賴T Internet,良好的內容管理流程對于提高生產率起到重要作用。企業再 也不用一而再、再而三地在電話服務里向顧客解釋一個技術問題,而只需要簡單地放置到網站上 即可。
5、 市場部門需要及時地在線開展市場活動,以應對企業快速推出的新產品或新版本。對市 場的反應遲鈍帶來的后果是失去市場份額。
6、 錯誤的信息對于客戶關系是致命的打擊,不可想象顧客可以忍受因為錯誤的操作指導引 起經濟上的損失。
7、 雇傭龐大的網絡系統維護隊伍,對于企業是一筆不必要的開支。
而使用內容管理系統可以使得內容制作人員高效地從他們熟悉的操作系統環境進行Web內 容的發布。網站結構管理和模板技術,可以提高效率,通過降低長期維護成本降低投資總成本, 對不斷變化的客戶需求和競爭威脅做出反應。
1.3內容管理系統的國內外發展現狀
目前,無論在國內還是在國外,內容管理系統產品都處在開發應用的黃金時期。根據META 集團的報告,在全球2000強公司中,采用網站內容管理的企業在2002第一季度就達到了 60%, 到了 2004年底,全球內容管理市場已經超過100億美元,采用網站內容管理系統的全球2000強 企業占到90%多。IDC公司則認為,網站內容管理市場將以年均44%的速度增長,到2006年將 達到240億美元的規模。
在國外,內容管理產品市場主要由四大提供商把持。據Forrester Research公司2001年對北 美地區874位高級主管的調查表明,Interwoven公司的企業內容管理解決方案以28%的應用比例 遙遙領先,Z后的是Vignette公司,占據16%的份額,Documentum公司占據15%份額。微軟公 司在2001年5月份購買了加拿大企業NCompass Labs之后獲得了該公司的Resolusion軟件產品, 并更名為Microsoft內容管理系統,該系統占據14%的市場份額。
對丁國內市場來講,國外的那些廠商在內容管理的影響力、技術、資金等方面具有一定的優 勢,但他們的產品面向的應用規模較大、功能大而全,價格昂貴、技術應用難度高、不支持中文 等問題是制約他們目前在中國快速發展的原因。因為中文內容管理技術和市場與國外相比,具有 一定的特殊性:
語言處理問題:這些內容管理產品都來自國外廠商,在內容的理解、檢索和表示方面,都以 英語為主要語言,這對國內絕大多數用戶來說是無法接受的。
工作流程問題:受到中國國情的限制,國內無論在政府機構還是企業,其工作流程還沒有完 全實現國際接軌,和國外仍有巨大的差別。這使得他們對內容管理系統在流程控制上的要求也與 國外不同。
成本問題:這些產品的價格相當高,以微軟的內容管理系統為例,其售價高達每個處理器 42999美元。而且內容管理實施的成本在國外也要在一年后才能完全收回并產生效益,加上服務 的費用,對于國內用戶來說,特別是中小企業來說,這是一個巨大的投資和風險。
隨著國內信息產業的發展,內容管理越來越受到政府和企業的重視。在2003年北京市政府 采購內容管理產品后,云南、陜西等省份也開始進行電子政務的建設。在企業方面,聯想集團、 海爾集團等國內大型企業也紛紛展開企業網站內容管理的建設。目前,國內的內容管理產品市場 卻遠未發育成熟。大部分的內容管理提供商是在原來的辦公軟件提供商的基礎上發展起來的,產 品的質量、功能和性能與國外相比仍有巨大差距。
1.4本文研究的內容及所作的工作
中國農業機械裝備經過50多年的建設,已形成了具有相當規模的農業機械工業體系。在經 濟全球化和市場國際化的趨勢下,我國農業工程和設備技術產品必須走向世界,提高參與國際市 場的競爭力。但是,由于生產企業的位置分散、產品的品種繁多、技術標準的復雜以及信息不暢 等原因,導致在農業機械裝備領域沒有形成網絡資源共享體系,其結果是給農業機械裝備整個行 業的發展形成障礙,與世界發達國家的差距增大。
農業機械裝備網是國家科技部于2003年11月開始支持的項目,其目的是完成國家農業機械 裝備網絡平臺的建設,形成農業機械裝備行業的資源共享平臺,利用此網絡平臺促進中國農業工 程和機械裝備的發展,提高中國農業機械裝備領域的整體水平。其中,內容管理系統是農業機械 裝備網的一個子系統。
本文研究的內容及所作的工作主要如下:
1、 深入研究了 J2EE技術體系,并對基于此技術的各種開發方法和解決方案進行全面研究。
2、 對數據庫通信技術進行深入研究,并設計和實現了一個高效的數據庫連接池。
3、 農業機械裝備網內容管理系統的需求分析和功能設計。
通過對網站建設和管理的長期深入調研和分析,確定了用戶的需求,并結合農業機械裝備網 的特定需求,進行了需求分析和功能設計,并采用建模工具進行分析設計。
4、 研究開發農業機械裝備網內容管理系統的理論依據和方案
如何去實現系統的功能,采用什么技術達到系統的先進性和穩定性,通過綜合分析給出一個 具體可行的方案。
5、 給出農業機械裝備網內容管理系統的設計和實現過程,詳細的描述了其中幾個模塊的實 現。
6、 對系統實現中的關鍵技術和難點,給出具體的解決辦法。
7、 與網站其它系統整合,并投入了實施和運行。
第二章J2EE技術規范
2. 1 J2EE總體概述
為了快速設計和開發企業級的應用程序,Sun公司推出了一種全新概念的模型一Java 2 Platform Enterprise Edition (J2EE),它與傳統的互聯網應用程序模型相比有著不可比擬的優勢。
2.1. 1 J2EE的發展
1997年4月12 B, Sun宣布了一項為企業環境開發Java平臺的創新成果。使用開放式的Java Community Process, Sun促進了一組標準的Java擴展的開發,稱為Enterprise Java API □這些應 用程序編程接口(API)為各種各樣的中間件的實現提供了不依賴供應商的編程接口。Enterprise Java API的要點是Enterprise JavaBeans API.后者為Java應用程序服務器定義了一個服務器端組 件模型,以及一個不依賴供應商的編程接口。
J2EE為Enterprise JavaBeans技術提供了工作環境。事實上,Sun把若干項軟件技術都設想為 這樣的構件塊,它們將使大型企業能把以任務為關鍵的業務系統移植到Java環境中,而Enterprise JavaBeans技術只不過是這些技術之一。EJB組件是按照它們自己的規范定義的,但是EJB技術 并不是一項獨立的技術。它建立在其它Java技術之上,這些技術由Sun和其它公司聯合規定,它 們一起提供了這個框架內容,該框架就稱為Java 2 Platform, Enterprise Editiono
參與到這個企業Java框架中,并不意味著每項技術都依賴于所有其它技術。單獨的規范文檔 指出每項技術的相關性。例如,Enterprise JavaBeans規范就指明了在定位各個組件時與JNDI的 相關性。以及在編程中啟動和停止事務處理時與JTA的相關性。
2.1.2 J2EE的優勢
J2EE是一種利用Java 2平臺簡化企業解決方案的開發、部署和管理相關復雜問題的體系結 構。J2EE技術的基礎就是核心Java平臺或Java2平臺標準版,J2EE不僅鞏固了標準版中的許多 優點,例如“編寫一次、隨處運行”的特性、方便存取數據庫的JDBC API、CORBA技術,以及 能夠在Internet應用中保護數據的安全模式等,同時還提供了對EJB、Java Servlets APL JSP Uava Server Pages)及XML技術的全面支持。其最終目的就是成為一個能夠使企業開發者大幅縮短投 放市場時間的體系結構。
J2EE的優勢主要表現在如下五點:
1、穩定的可用性
一個服務器端平臺必須能夠全天候運轉以滿足公司客戶、合作伙伴的需要。因為Internet是 全球化的、無處不在的,即使在夜間按計劃停機也可能造成嚴重損失。若是意外停機,那會有災 難性后果。J2EE部署到可靠的操作環境中,支持長期的可用性。
2、 可伸縮性
企業必須選擇一種服務器端平臺,這種平臺應能提供極佳的可伸縮性去滿足那些在他們系統 上進行商業運作的大批新客戶。基于J2EE平臺的應用程序可被部署到各種操作系統上。例如可 被部署到高端UNIX與大型機系統,這種系統單機可支持64?256個處理器。J2EE領域的供應 商提供了更為廣泛的負載平衡策略,能消除系統中的瓶頸,允許多臺服務器集成部署。這種部署 可達數千個處理器,實現可高度伸縮的系統,滿足未來商業應用的需要。
3、 支持異構環境
J2EE能夠開發部署在異構環境中的可移植程序。基于J2EE的應用程序不依賴任何特定操作 系統、中間件、硬件,因此設計合理的基于J2EE的程序只需開發一次就可部署到各種平臺。這 在典型的異構企業計算環境中是十分關鍵的。J2EE標準也允許客戶定購與J2EE兼容的第三方現 成的組件,把他們部署到異構環境中,節省了由自己制定整個方案所需的費用。
4、 高效的開發
J2EE允許公司把一些通用的、很煩瑣的服務器端任務交給中間件供應商去完成,這樣開發 人員可以集中精力在如何創建業務邏輯上,相應地縮短了開發時間。
5、 保留現存的IT資產
由于企業必須適應新的商業需求,利用已有的企業信息系統方面的投資而不是重新制定全盤 方案就變得很重要。這樣,一個以漸進的方式建立在已有系統上的服務器端平臺機制是公司所需 求的。J2EE框架可以充分利用用戶原有的投資,如一些公司使用的BEA Tuxedo. IBMCICS等, 這之所以成為可能,是因為J2EE擁有廣泛的業界支持和一些重要的“企業計算”領域供應商的 參與。每一個供應商都對現有的客戶提供了不用廢棄已有投資即可進入可移植的J2EE領域的升 級途經。由于基于J2EE平臺的產品幾乎能夠在任何操作系統和硬件配置上運行,現有的操作系 統和硬件也能被保留使用。
2. 1.3 J2EE應用程序的結構
SUN設計J2EE的初衷是為了解決兩層模式(client/server)的弊端。在傳統的兩層模式中, 客戶端擔當了過多的角色而顯得臃腫。在這種模式中,第一次部署的時候比較容易,但難于升級 或改進,可擴展性也不理想。現在,J2EE的多層企業級應用模型將兩層化模型中的不同層面切 分成許多層,一個多層化應用能夠為不同的服務提供一個獨立的層。
J2EE典型的結構分為4層:
•運彳亍在客戶端機器上的客戶層組件(Client tier)。
•運行在J2EE服務器上的Web層組件(Web tier)。
•運行在J2EE服務器上的業務邏輯層組件(Business tier)o
•運彳亍在EIS服務器上的企業信息系統(Enterprise information system)層軟件(EIS tier)。
其中第二層和第三層合稱為中間層(Middle tire)。其結構圖如圖2-1所示:
2.2基于J2EE的WEB應用解決方案
計算機網絡技術的發展和成熟,特別是Internet的普及,將應用擴展到局域網、廣域網甚至 Internet上已經成為軟件發展的必然需求,企業迫切需要有效地實施企業系統的開發,構建出高 質量的結構、高度可用的、高效的網絡應用,具備與網絡時代相適應的特點,具有集成Internet 的能力。在傳統的應用中,主要采用分布式計算環境中最為流行的C/S計算模型。然而C/S計算 模型在大型網絡中存在著可擴充性差、可維護性差以及客戶端負載過重等缺點。隨著網絡迅速普 及,各種新的網絡技術,包括Web技術和分布式對象技術等的出現和成熟,為企業級的開發注入 新的動力。隨著Web技術、分布式對象技術兩者的結合,導致了整個應用系統的體系結構從過去 的C/S主從結構向靈活的基于Browser/Server的多層分布式Web計算模型演變。
2.2.1基于B/S的多層分布式結構
隨著互聯網技術的發展,網絡用戶的數量急劇增長,應用日趨復雜,傳統的C/S結構由丁-它 的局限性,正在被B/S結構所取代。基于B/S的分布式體系結構,以組件開發,利用Browser作 為最終用戶界面的解決方案已經成為今后應用軟件開發的方向。B/S模型實質上也是一種三層客 戶/服務器模型,只不過在B/S結構下,客戶端只需要安裝瀏覽器,用它來進行邏輯的顯示,以方 便用戶和服務器進行交互,而中間層處理大部分業務邏輯,如對客戶端的請求進行處理,完成對 數據庫的訪問,并將結果返回給客戶端。
但是隨著Internet的普及與發展,對Web應用開發的要求越來越復雜,一個Web應用的開發 不僅僅局限于創建HTML文件和簡單的CGI腳本,而是涉及到怎樣處理一個高性能、高伸縮性、 高健壯性和易于管理等非常復雜的問題,傳統上的B/S結構己經不能解決上述問題。為了彌補 B/S結構的缺陷,技術開發者提出了 N層結構的概念,N層結構是把傳統的B/S三層結構的中間 層進一步劃分成許多獨立的組件層,分布在許多不同的機器上,可能使用CORBA.EJB或DCOM, 因此乂可以稱為多層分布式結構。實際上這種結構還是以三層結構作為基本模式,只不過在中間 層可以同時使用分布結構的多個服務器資源。
這種基于B/S的多層分布式結構真止實現了顯示與邏輯處理的分離,它的主要優點有:
1經濟性、可維護性。在客戶端只有簡單的瀏覽器,這樣在企業內部部署硬件時客戶端有時 僅需要簡單的可以聯網的PC機即可,大大降低了成本。由于瀏覽器執行應用程序是從Web服務 器上下載來的,因此客戶端不必安裝及配置應用軟件,而系統維護人員只需要在服務器端對服務 器進行集中的維護。這給應用軟件的維護、升級帶來巨人的好處。
2可伸縮性。在設計中使用這種結構可以將復雜的業務處理分割成相互之間可交互調用和通 訊的若干個業務功能部件和對象,并可以將其分配到多個網絡互連的應用服務器中來實現負荷分 擔。這種應用服務器還具備對分布對象管理和實時調度的功能,能夠迅速的將請求交給當時可用 的對象,并隨著請求的增多調用更多駐留在其應用服務器上的對象,從而實現只要通過添加應用 服務器便能滿足日益增長的業務處理需要。
3健壯性。當某臺應用服務器發生故障或失效時,分布式系統會自動把該應用服務器正在處 理的事務請求移交給另外一臺工作正常的服務器。
4軟件重用及可剪裁性。業務處理是由許多分布式對象交互協作完成的。將來會出現更髙層 次的分布式對象組件和商務對象組件,可以針對每個企業級應用的具體情況量體裁衣,選用不同 的分布式商務對象組件來構建應用系統。
5兼容性。由于對象可以建成與現有系統接合的方式,所以分布式對象是可以與現有系統一 起工作。一個對象如果具有現有系統的接口,就可以在分布式系統中調用以前的程序,同時,使 用分布式對象時,不必重建傳統的應用程序。這樣便大大加快了系統的開發速度,也節省了大量 資金。
6異構性。網絡分布的業務處理對象可訪問不同的后臺數據庫,適合多種異構數據庫環境, 從而達到數據分布開放的效果。
7安全性。嚴密的安全管理,對業務處理對象的調用和數據庫的存取權限是按層次設置的。 即使外部入侵者突破了客戶機層的安全防線,如果在應用服務器層中備有另外的安全設計,系統 也可以阻止入侵者侵入。
8獨立性。在多層結構中,各層都具有相對獨立性,于是每一層都可選取各自的最優解決方 案。
隨著基于Web的瘦客戶機結構的發展,基于B/S的多層分布式體系結構已經是開發企業級應 用系統的主流。B/S計算模型的特點和優越性給應用軟件的開發注入了強大的動力,極大的推動 了應用系統集成的發展。
2.2.2 J2EE Web應用多層結構
J2EE規范作為一種可擴展的、多功能的平臺,可將企業級應用擴展到WEB上并可適應多種 不同的Internet數據流,可連接到幾乎任何一種數據庫和已存的系統上,開發人員可以使用不同 廠家所提供的產品和技術來開發和部署應用程序,進而降低開發的費用和復雜性,目前J2EE技 術已經取得了巨大的成功。
SUN設計J2EE的初衷是為了解決兩層模式的弊端。在傳統的兩層模式中,客戶端擔當了過 多的角色而顯得臃腫。在這種模式中,第一次部署的時候比較容易,但難于升級改進,可擴展性 也不理想,而且經常是基于某種專有的協議,這樣就使得重用業務邏輯和頁面邏輯變得非常困難。 現在,J2EE的多層企業級應用模型將兩層化模型中不同的層面切分成多層,由Web做表示層, 由EJB和JavaBean做業務層,由JDBC做集成層。
客戶層 Web層 業務層 集成層 資源層
pg JSP和 Servlet 三 3
圖2-4體系結構的分層圖
實際上要從物理上再考慮分層的話,就會真正理解N層的含義,不同的客戶請求得到處理之 前所經過的區域即為層。每個層都與一個或多個邏輯相關聯,例如表示、業務或數據訪問等。兩 層應用一般由表示層和數據層組成。三層應用則更進一步,存在一個更瘦的客戶端與某個Servlet 或CGI程序相關聯,而后者再與數據庫通訊,表示層和數據層更明顯地被分離,而服務器端也從 數據訪問邏輯中區別出了業務邏輯。一個N層應用則包括更復雜地處理路徑,其中可能涉及到更 多的遠程方法調用。舉例來說,一個客戶與某個Servlet或JSP聯系,而Servlet則與一組應用服 務器通信,每個應用服務器均可以訪問不同的數據庫。可以說目前的絕大多數Web應用系統都是 N層的。
2. 2.3基于J2EE的多層Web應用實現方法及比較
J2EE技術本身包括許多不同技術,因此可以通過不同的技術組合方式來實現Web應用,基 于J2EE的多層Web應用主要由兩種實現方法,一種以Web層為中心的Web應用,一種是以業 務層為中心的Web應用。
1、以Web層為中心
以Web層為中心的企業級應用,表示和業務邏輯都位于Web容器中,通過JDBC和Connector 訪問EIS資源。
Web層幾乎實現所有的功能,如訪問EIS,接受和解釋來自客戶端的輸入、生成動態內容和 分配資源等,由于Web層需要完成的功能太多,很容易在系統中造成很大的瓶頸,而且以Web 層為中心的系統有集成化的傾向,隨著軟件復雜性的增加,JSP頁面將充斥大量的HTML標記和 Java代碼,業務邏輯一點改變都會大面積的修改源程序,后期維護工作無法想象,另外由于許多 模塊不能復用,導致系統擴展性能較差,而且J2EE的Servlet和JSP雖然是J2EE中用來開發服 務器端動態網頁的主要技術,但是它只適合網絡流量較小的數據存取,對于網絡流量較大的且復 雜的多筆數據存取交易就會顯得難以應付,即使勉強使用,在實現上的難度頗高,比如說維護交 易記錄一致性、多個客戶端同時存取數據記錄的情況,以及必須應付數量無法預知的客戶端請求 等。
圖2-5以WEB層為中心的web應用圖
2、以業務層為中心
以業務層為中心的企業級Web應用,位于Web容器里的Web組件專門處理應用的表示邏輯, 由JSP和Servlet負責產生動態的Web內容,并將其傳送到客戶端。駐留在EJB容器中的業務邏 輯組件,一方面響應Web層的請求,另一方面訪問EIS資源,把數據訪問和終端用戶的交互分離 開來。
運行在應用服務器中的EJB承擔核心業務邏輯的實現及與EIS通信,Web層通過業務層訪問 EIS,這樣絕大多數的核心功能轉移到業務層,Web層只是負責接收客戶的請求和給客戶顯示 HTML應答頁面,由于業務層能夠和許多企業級的服務交互,極大的降低了系統的開發難度,另 一方面由于業務層中的EJB容器提供了一個高度結構化的開發環境,使得開發人員可以完全集中 于業務問題本身的研究,EJB容器提供的這些標準化的服務使得系統具有更好的可靠性。并且業 務層的結構鼓勵封裝和組件化設計原則,避免把業務邏輯暴露給客戶,便于日后應用系統的維護 和升級。
兩種方案比較,以Web層為中心的方案適合中小系統的應用,以業務為中心的方案適合構建 大型的復雜的企業級應用。
2. 3 J2EE核心技術
J2EE是一個技術架構,也可以視為一個技術體系,它包含了許多內容,這也是其復雜性之 所在。根據其應用的不同分成組件技術、服務技術和通信技術。
2.3.1組件技術
在任何應用程序中,最重要的元素就是通過使用組件或者應用程序級可重用的單元來構建必 要的業務邏輯。J2EE系統平臺為開發組件提供了三種技術,分別是Servlet、JSP和EJB,其中 Servlet和JSP又稱Web組件技術,需要澄清的一點是,J2EE系統平臺并不規定一個應用程序必 須使用所有三種類型的組件技術。
2.3.1.1Web 組件
Web組件技術具體分為JSP技術和Servlet技術。
1、 JSP技術
JSP提供了一種在網頁中嵌入組件的方式,并且允許生成相應的網頁最終發送給客戶。JSP 網頁可以包含HTML、Java代碼及JavaBean組件。JSP網頁實際上是Servlet編程模型的一個擴 充。當用戶請求一個JSP網頁時,Web容器會把相應的JSP網頁編譯成一個Servleto接著此Web 容器調用這個Servlet,并且把得到的內容返回給Web瀏覽器。從JSP網頁編譯出Servlet之后, Web容器就可以簡單地把這個Servlet返回,而不需要每次都重新編譯。因此,JSP網頁提供了一 種功能強大的動態網頁裝配機制,可以從Java系統平臺的許多優點中獲益。
與純Java代碼構成的Servlet相比,JSP網頁只是基于文本的文檔,直到Web容器把它們編 譯成相應的Servlet為止。這樣在應用程序邏輯與表示邏輯之間就有了清楚的分界。這種情況進而 使應用程序開發者能夠集中注意力于業務細節,而讓Web設計者集中注意力于信息的表示。
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼和由 語言引擎解釋執行程序代碼的能力。但是,ASP的編程語言是VBScript之類的腳本語言,JSP使 用的是Java,這是兩者最明顯的區別。此外,ASP與JSP還有一個更為本質的區別:兩種語言引 擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執 行;在JSP下,代碼被編譯成Servlet并由Java虛擬機執行。
總之,JSP規范是Web服務器、應用服務器、交易系統及開發工具供應商之間廣泛合作的結 果,它在多方面加速了動態頁面的開發。
2、 Servlet 技術
Servlet是一個以Java技術為基礎的Web組件,它被一個容器管理,它能產生動態的內容。 像其它以Java為基礎的組件一樣,Servlet是獨立于各種平臺的Java類,它能夠被編譯成平臺中 立的字節碼,然后在可以使用Java的Web服務器上裝載和運行。容器有時也被稱作Servlet引擎, 是Web服務器的擴充,它提供了 Servlet的功能。Servlet通過Servlet容器實現的請求/應答機制與 Web客戶端進行交互。
Servlet容器是服務器或應用服務器的一部分,它提供了網絡服務。通過這些網絡服務請求和 應答對以MIME為基礎的請求進行解碼,形成以MIME為基礎的應答。一個Servlet容器在Servlet 的整個生命周期中裝載并管理它。
一個Servlet容器能夠建立在Web服務器的核心中,也可以通過服務器本身的擴展API作為 附加組件安裝在一個Web服務器中o Servlet容器還可以嵌入或安裝到支持Web的應用服務器中。
所有的Servlet容器必須將HTTP作為請求和應答的規程。另外,以類似HTIPS這樣的規程 為基礎的請求和應答也可以被支持。
一個Servlet可以具有這樣一個處理序列:
(1)一個客戶端連接到一個Web服務器,并發送一個HTTP請求到這個Web服務器。
(2)請求被Web服務器接收,并轉交給Servlet容器。Servlet容器可以與Web服務器在同 一個主機上運行、在同一個主機但不是同一個處理器上運行,或者是不同的主機上運行。
(3)Servlet容器在其配置的Servlet中找到調用的Servlet,然后,用代表請求和應答的對象 調用它。
(4)Servlet使用請求對象找到誰是遠端的用戶,那些HTTP POST參數可能被作為這個請求 的一部分,并找出其它相關參數。Servlet完成已經被編入程序的處理邏輯,然后生成數據返回客 戶端。在它將數據返回到客戶端的時候通過應答對象完成。
(5)當Servlet完成了對請求的處理,Servlet容器確認應答已經確實完成,則將控制權返回 給Web服務器。
Java Servlet是創建動態的、高性能的電子商務站點的有效工具,它能夠改善電子商務應用的 操作效能和可伸縮性,并能重復使用各種用于提高應用開發效率的部件。
圖2-7典型Web應用程序體系結構圖
2.3.1.2Enterprise JavaBeans 組件
EJB是用于開發安全、可擴展、事務型及多用戶組件的一種分布式組件模型。簡單地講,EJB 是(理想的)包含業務邏輯的可重用軟件單元。正如JSP網頁允許把應用程序和表示邏輯分開,EJB 允許把應用程序邏輯與系統級服務分開,這樣開發者可以集中精力于具體業務問題,而不是系統 編程。這些企業小程序(Bean)業務對象具有三種基本形式,同樣也沒有必要三者都實現,它們分 別是會話(Session)Bean、實體(Entity)Bean 和消息驅動(Message-driven)Bean。
1、會話Bean
會話Bean本身有兩種類型。一種是說明性會話(Statefill Session)Bean,這是一種用于表示一 個客戶與系統交互的短暫對象。它執行客戶應用程序中的請求、訪問數據庫等,當客戶的操作完 成后,它將被刪除(也就是它只存在于客戶會話中)。這方面的一個示例就是一個應用程序客戶發 送一系列請求到一個應用程序,從而來執行一個業務處理。在這種情況下,說明性會話Bean可 以跟蹤客戶與應用程序之間的交互狀態。另一種形式是無狀態(Stateless)會話Bean,不在客戶請
求之間維護狀態信息。一般情況下,此類會話Bean用于實現一種不要求客戶狀態的特定服務, 例如一個簡單的數據庫更新。
2、 實體Bean
實體(Entity)Bean是一種持久性的對象,確定了數據存儲的模型。也就是說它是數據的一個 對象包裝器。例如,關于一次購買訂單的數據可以使用實體Bean Purchaseorder表示出一個綜合 的、包含全部相關購買訂單數據的視圖。與可供任何客戶使用的會話Bean相比,實體Bean可以 同時由許多客戶訪問,但是必須通過一個主鍵來維護一個惟一的標識。實際上,在J2EE容器結 構中,我們可以選擇由容器管理實體Bean的永久狀態,或者在Bean自身中“手工”實現這一點。
3、 消息驅動Bean
消息驅動Bean是一類特殊的EJB,它并不是直接客戶調用的方式。消息驅動Bean的目的在 于處理通過JMS收到的消息。消息驅動Bean通過提供一種在EJB容器內部處理消息的方式來實 現JMS的異步屬性。當應用程序客戶或者一個應用程序通過JMS發送一條消息時,容器調用適 當的消息驅動Bean來處理這條消息。
EJB組件是可部署的,它們可被導入到作為組件主機的應用服務器中。EJB的優點如下:
•它是被業界認可的。凡是使用EJB的人們都會受益于它的廣泛應用。因為每個人都使用 相同的技術,在將來,您很容易就會雇傭到雇員,他們懂得您的系統(因為他們以前有 過EJB的開發經驗),學習用最好的方式來提升您的系統性能,適應業務(因為技術是 一致的)和最終賣掉您的軟件。“一旦培訓,代碼任移”的概念將被應用。
•移植性容易實現。EJB規范是公開發布的,并且每個人都能得到它。因為EJB是一種標 準,所以您不必依賴于某一個單一的、孤立的供應商的體系結構。
•快速應用系統開發。因為您從應用服務器中可以獲得中間件,所以應用系統的構建會快 很多,同時也有更少的麻煩需要處理。
圖2-8客戶端與EJB組件系統的交互圖
2. 3. 2服務技術
2.3.2.1 JNDI
JNDI(Java Naming and Directory Interface, Java 命名和目錄接口)是一組在 Java 應用中訪問命 名和目錄服務的API。命名服務將名稱和對象聯系起來,使得我們可以用名稱訪問對象。目錄服 務是一種命名服務,在這種服務里,對象不但有名稱,還有屬性。
命名或目錄服務使你可以集中存儲共有信息,這一點在網絡應用中是重要的,因為這使得這 樣的應用更協調、更容易管理。例如,可以將打印機設置存儲在目錄服務中,以便被與打印機有 關的應用使用。
1、JNDI概述
我們大家每天都不知不覺地使用了命名服務。例如,當你在web瀏覽器輸入http://java.sun.com 時,DNS(Domain Name System,域名系統)將這個符號URL名轉換成通訊標識(IP地址)。命名系 統中的對象可以是DNS記錄中的名稱、應用服務器中的EJB組件、LDAP(Lightweight Directory Access Protocol)中的用戶 Profile<>
目錄服務是命名服務的自然擴展。兩者之間的關鍵差別是目錄服務中對象可以有屬性(例如, 用戶有email地址),而命名服務中對象沒有屬性。因此,在目錄服務中,你可以根據屬性搜索對 象。JNDI允許你訪問文件系統中的文件,定位遠程RMI注冊的對象,訪問象LDAP這樣的目錄 服務,定位網絡上的EJB組件。
對于象LDAP客戶端、應用launcher,類瀏覽器、網絡管理實用程序,甚至地址薄這樣的應 用來說,JNDI是一個很好的選擇。
2、JNDI架構
JNDI架構提供了一組標準的獨立于命名系統的API,這些API構建在與命名系統有關的驅動 之上。這一層有助于將應用與實際數據源分離,因此不管應用訪問的是LDAP、RML DNS、還 是其他的目錄服務。換句話說,JNDI獨立于目錄服務的具體實現,只要你有目錄的服務提供接 口(或驅動),你就可以使用目錄。
關于JNDI要注意的重要一點是,它提供應用編程接口(application programming interface,API) 和服務提供者接口(service provider interface,SPI)»這一點的真正含義是,要讓你的應用與命名服 務或目錄服務交互,必須有這個服務的JNDI服務提供者,這正是JNDI SPI發揮作用的地方。服 務提供者基本上是一組類,這些類為各種具體的命名和目錄服務實現了 JNDI接口一很象JDBC 驅動為各種具體的數據庫系統實現了 JDBC接口一樣。作為一個應用開發者,你不必操心JNDI SPL你只需要確認你要使用的每一個命名或目錄服務都有服務提供者。
23.2.2JMS
1、消息服務
消息是軟件組件或應用之間的一種通信方法。消息系統是一種對等(peer-to-peer)的系統: 消息客戶可以向其他客戶發送消息,也可以接收來自其他客戶的消息。每一個客戶和一個消息代 理相連,由消息代理提供創建、發送、接收、讀取消息的服務。
消息實現了松散耦合的分布式通信。組件發送消息到目的,消息接收者從該目的提取消息。 但是,消息的發送和接收卻不是同時進行的。實際上,發送者不必去了解接收者,同樣接收者也 不必了解發送者;它們只需要知道消息格式和消息目的。因此,消息不同于像遠程方法調用(RMI) 這種緊密耦合的通信方法,RMI要求知道遠程應用的方法。
消息也不同于電子郵件(e-Mail),電子郵件是人與人或應用程序與人之間的通信方法。消息只 應用于應用程序和組件之間的通信。
2^ Java消息服務
Java消息服務是一組Java應用程序接口(Java API),它提供創建、發送、接收、讀取消息的 服務。由Sun公司和它的合作伙伴設計的JMSAPI定義了一組公共的應用程序接口和相應語法, 使得Java程序能夠和其他消息組件進行通信。
JMSAPI最大限度的減少了程序員學習使用消息產品的概念,但是卻提供了足夠功能支持復 雜的消息應用。通過JMS提供者內相同的消息域,它最大限度的加大了消息應用的可移植性。
JMS建立了一個松散耦合的通訊框架,采用異步的形式并且很可靠:
異步:意味著接收者不需要為了接收一條消息而主動地向它發出請求。
可靠:意味著可以保證得到消息的一次性成功發送,這是現代系統的基本特征。
消息系統可以分為兩個一般領域:點到點(point-to-point)和出版/訂閱(publish/subscribe)。 為滿足J2EE規范,JMS對這兩個領域都提供支持。
3^ JMS體系結構
在JMS體系結構中有6個基本構件,建立JMS應用程序需要逐一地使用它們:
•管理的對象:指普通情況下在程序外面維護的對象,經常要使用一些類型的管理工具。 這些一般都是JMS實現中唯一的工廠(factory)對象。
•連接:泛指與JMS提供者服務器的連接,經常是位于客戶和JMS服務器之間的一•個套接 字連接。連接從一個ConnectionFactory獲得,可以用于生成一個或多個會話。
•會話:會話為一些消息分組而提供事務型上下文環境。會話對象用于生成消息制造者、 消費者以及消息本身。
•消息制造者:消息制造者是由會話生成的。它們向一些目的地發送消息。
•消息消費者:這些內容位于JMS主題/隊列的另一端,與制造者不同,它們接收發送到 某個目的地的消息。
•消息:這里包裝著數據,由制造者發岀,要由消費者接收。消息由三部分組成。頭部
(header)包含著諸如目的地、回復目標、時間限制等內容;屬性(properties)是頭 部的擴充,包含著可選頭部字段以及一組應用程序專用的名字一值對,可以從Message 對象訪問;第三部分就是消息主體(message body),可以是字節、Java對象、String 消息等內容。
JMS各構件的相關性和關系如圖2-9所不:
圖2-9 JMS各構件的關系圖
2.3.2.3 JavaMail
JavaMailAPI是一個抽象的類組,使基于消息的系統得以實現。JavaMail API對于消息領域 所起的作用就像是JDBC對于數據庫所起的作用。它提供了一種抽象的與大范圍消息存儲機構交 互的方法。JavaMail使得在任何Java程序、servlet、bean或者applet中都能夠很容易實現電子郵 件連接能力。與包裝電子郵件以便于成功地進行接收和發送相關的復雜問題已經被抽象成一組方 法調用。
JavaMail包的一部分綁定的核心協議如下:
•簡單郵件傳輸協議(Simple Mai.1 Transport Protocol, SMTP)
•郵件協議版本 3 (Post Office Protocol version 3, POP3)
•因特網消息訪問協議(Internet Message Access Protocol. IMAP)
•多用途因特網郵件擴充(MIME)
JavaMailAPI是非常大的一個類和接口的集合,總數接近了 100個。但是,在使用時并不需 要理解其中的每一個細節,可以對實現進行抽象并且提供一個清楚而簡單的功能接口。其所有的 類可歸結為以下四個方面:
•會話管理:API的會話部分定義了郵件客戶與網絡的交互。它處理所有與總體通信的有 關方面,包括該使用什么協議進行傳送以及需要哪些默認值。
•消息管理:由于JavaMa訂API的總的目標是發送和接收郵件消息,因此這里有豐富的 API用于生成和管理郵件消息。
•郵件存儲和檢索:如果一條消息沒有被發出或者沒有收到,那么它正在存儲中。消息存 儲在類似于文件和目錄的層次結構中。JavaMa訂API有一組用于管理這種存儲的類, 包括添加、刪除和移動消息。
•傳送:最后是消息的傳送。JavaMail里有特定的類來簡化此機制。
2.3.2A Java連接器結構(JCA)
企業信息系統(EIS)為整個企業提供信息基礎設施和服務。這些信息的形式可能是一個數 據庫中的一組記錄、一個ERP業務中的對象、一個客戶關系管理(CRM)系統的工作流對象、 或者一個事務處理應用程序中的事務程序。
對這些復雜業務應用程序進行調整使之成為一個多層應用框架具有很大的挑戰性,而把它們 應用于一個具有高可用性的Web應用,則是一項龐大的工程。
在Connector Architecture出現之前,一些應用程序服務器廠商為集成EIS系統提供了各種可 自定義的適配器。這些適配器基本上提供了自定義的本機接口,這些內容很復雜,不易理解,并 且因為它們試圖支持一種標準體系結構而受到限制。
J2EE Connector Architecture (J2EE連接器體系結構,JCA)為開發者提供了一種容易的辦法 以便于把Enterprise Information Systems (企業信息系統,EIS)與J2EE系統平臺組件無縫地集成 起來。
JCA是在一個遵守J2EE 1.3規范的應用程序服務器上實現的,同時有一個由EIS廠商提供的 遵守JCA的資源適配器。這個資源適配器在應用程序服務器中是一個EIS專用的可插入J2EE組 件,它提供了一個用于與基層EIS系統通信的接口。JCA定義了下列元素和服務:
•系統級合同(contract)和服務:定義了 J2EE組件、應用程序服務器提供者和EIS系 統之間的標準接口。這些合同和服務是由J2EE服務器提供者實現的,并且也位于EIS 廠商的資源適配器中。這些合同和服務的實現在應用服務器和資源適配器的系統級角色 和責任之間定義了一個邏輯劃分。這樣就使J2EE服務器和資源適配器能夠彼此協作, 例如連接緩沖池、安全性和事務等。
•JCA通用客戶接口(CCI):定義J2EE組件(如JSP、EJB等)可以用于連接到EIS系統 或者與之交互的一個客戶API,除了 J2EE客戶組件之外,它還允許非管理的應用程序
(如Java applet和應用程序客戶)使用一個遵守JCA的資源適配器與一個EIS集成。
•打包和實施接口:允許各種EIS資源適配器插入J2EE應用程序中。
2. 3. 3通信技術
2.3.3.1因特網協議
由于網絡技術的快速發展,瀏覽器幾乎適用于世界上任何場合。客戶的請求以及服務器的響 應將通過三種主要協議實現通信。
1、HTTP
HTTP即超文本傳輸協議,是一種通用的、無狀態的應用程序級協議,除了簡單的超文本功 能外還有許多應用。它工作于一種請求/響應機制上。客戶以請求方法的形式向服務器發送一個請 求,后面有URI (Uniform Resource Identifier.統一資源標識符)、協議版本號、一個類似于MIME 的消息包含著請求修飾符、客戶信息以及正文內容,這些信息都通過一條與服務器的連接發送出 去。服務器接下來用一個狀態行進行響應,后面跟隨一個類似于MIME的消息,包含著服務器信 息、實體元信息以及可能實體正文內容。
2、 TCP/IP
TCP (傳輸控制協議)與IP (網際互聯協議)實際上是兩個分離的協議,但人們一般都把它 們結合為一個實體。IP是一種保證通信雙方在因特網上能夠接收到數據的協議。當我們在瀏覽器 中輸入一個網址時,IP可以保證我們的請求以及對這些請求的執行會傳送到正確的目的地。為了 提高效率,客戶與Web服務器之間傳送時并不是都采用相同的路由。TCP是跟蹤分組并且保證 它們按照當初拆分時的順序重新裝配的協議,并且保證不出差錯。因此,TCP和IP結合起來可 以在因特網上傳輸數據。
3,SSL
安全套接層(SSL)用于對客戶和服務器之間的信息流進行加密和解密。這樣也提供了一種 供雙方彼此驗證的辦法。安全HTTP (HTTPS)通常會使用不同的端口號(默認為443),以此與 普通未加密的HTTP區分開。
23.3.2遠程對象協議(RMI)
在當今的編程術語中,分布式計算已經成為一個很常見的詞。它指的是一種應用程序設計方 案,在這種方案中程序、程序處理的數據以及實際計算任務都分布在網絡上,這樣可以調節多臺 計算機的處理能力,也可以適合應用程序由不同模塊組成的本性。
在Java分布式對象模型中,遠程對象就是可以從另一個Java虛擬機調用其方法的對象,其 可以位于一個不同的主機上。這種類型的對象由一個或者多個遠程接口描述,這些是Java接口, 它們聲明了該遠程對象的方法。遠程方法調用(RMI)就是指調用一個遠程對象上遠程接口的一 種方法的操作。
RMI的目的是讓位于不同JVM中的對象外觀及行為上都是本地對象。調用此遠程對象的 JVM通常稱為客戶,包含此遠程對象的JVM—般稱為服務器。這種RMI設計的最重要方面是其 設計上的透明性。應用程序并不知道一個對象是遠程的還是本地的。在遠程對象上進行的方法調 用與在一個本地對象上進行方法調用采用相同的語法,而實際上發生的過程要比看到的復雜的 多。
在RMI中,“服務器” 一詞并不指實際的服務器或者應用程序,而是指擁有一些可供遠程調 用的方法的一個遠程對象。與此類似,“客戶”一詞也不指實際的客戶計算機,而是指調用一個 遠程對象上的遠程方法的對象。同一個對象既可以是客戶,也可以是服務器。
盡管獲得對一個遠程對象的引用與獲得對本地對象的引用有所不同,但是,當有了這種引用 之后,程序員就可以把遠程對象像本地對象一樣使用。RMI底層會自動截獲方法調用,找到遠程 對象,然后處理遠程請求。
遠程對象總是通過其遠程接口來訪問的。也就是說,客戶只有在確定了對遠程接口的引用之 后才可調用對象上的方法。其實現實際上是由三個抽象層建立:
• Stubs/Skeletons Layer (存根/主架層):這一層會截獲客戶發出的對接口引用的方法
調用,并且把這些調用重定向到一個遠程對象。需要記住的是,這里的stubs (存根信 息)是針對客戶方的,而skeletons (主架信息)則位于服務器方。
•Remote Reference Layer (遠程引用層):這一層處理著與解釋和管理客戶對遠程對象 建立的引用有關的細節。它把客戶連接到正在運行的遠程對象,并且通過一對一的連接 鏈路導出到一個服務器。
•Transport Layer (傳輸層):這一層建立在網絡上計算機之間的TCP/IP連接基礎上。 它提供了基本的連接能力以及一些防火墻深透策略。
應用層
表示層
會話層
傳輸層
網絡層 數據鏈路層
圖2-11 RMI體協結構分層圖
這個分層結構提供了良好的實現靈活性,不會影響應用程序的體系結構。每一層都可以得到 增強或者更換而不會影響系統的其它部分。
第三章數據庫通信和連接池技術
3.1 JDBC 技術
JDBC是一種“開放”的方案,它為數據庫應用開發人員、數據庫前臺工具開發人員提供了 一種標準的應用程序設計接口,使開發人員可以用純JAVA語言編寫完整的數據庫應用程序。在 JDBC的發展經歷中,產生了幾種不同的驅動程序結構。
1、JDBC-ODBC 橋
第一類驅動程序利用“橋”的概念,使用已經存在的ODBC驅動程序RDBMS連接。這類驅 動程序不是100%JAVA的驅動程序。
開放數據庫連接(Open Database Connectivity, ODBC)的生成最初是為 Microsoft Windows 系統平臺上的SQL提供API標準,后來經過了增強也為其它系統平臺提供SDK。ODBC部分以 X/Open Call-Level Interface (CLI)技術規范為依據,它是數據庫訪問的標準API。
JDBC驅動程序的第一類在JDBC API與ODBC API之間提供了一個橋梁。這個橋把標準 JDBC調用翻譯成對應的ODBC調用,然后通過ODBC庫把它們發送到ODBC數據源。如圖3-1 所示:
圖 3-1 JDBC-ODBC 橋圖
2、部分Java、部分本機驅動程序
這種類型的驅動程序使用的是Java實現與廠商專用API的混合形式來提供數據庫訪問。它 與類型1的驅動程序相比少經過一層,因此速度上比類型1快些。
JDBC數據庫調用被翻譯成廠商專用的API調用。數據庫將處理相關的請求并且把結果通過 API送回,然后結果再被轉發到JDBC驅動程序。JDBC驅動程序將把結果翻譯成JDBC標準, 并且把它們返回到Java應用程序。
與類型1驅動程序相似,部分Java、部分本機代碼的驅動程序以及廠商專用的本機語言API 必須在每個運行此Java應用程序的客戶上安裝。
圖3-2部分Java、部分本機驅動程序
3、中間數據庫訪問服務器
第三類驅動程序作為一個代理的驅動程序與某個中間層服務器通話,而再由這個中間層服務 器使用第一類或第二類驅動程序與數據庫通信。
Java客戶通過一個JDBC驅動程序向中間數據訪問服務器發送一個JDBC調用,它使用另一 個驅動程序完成數據源的請求。用于在客戶和中間服務器之間通信的協議取決于這個中間件服務 器廠商,但此中間件服務器可以使用不同的本機協議來連接不同的數據庫。
4、純Java驅動程序
第四類驅動程序通過RDBMS支持的訪問協議直接與RDBMS通話,是真正的100%JAVA驅 動程序,因此具有很高的效率。
此類驅動程序使用廠商專用的網絡協議把JDBC API調用轉換成直接網絡調用。它們這樣做 是通過與數據庫建立直接的套接字連接。此類驅動程序提供的性能一般要優于類型1和類型2驅 動程序。它也是實用中最簡單的驅動程序,因為這里不需要安裝其它庫或者中間件。所有的主要 數據庫廠商都為它們的數據庫提供了純Java驅動程序,也可以從第三方廠商獲得這些驅動程序。
圖3-4純JAVA驅動程序
3. 2訪問數據庫
在基于JDBC的應用程序中,很多內容都圍繞著java.sql.Connection接口。在進彳亍任何數據 庫操作之前,應用程序必須首先創建一個到數據庫的連接(Connection)。然后,這個連接就成為 應用程序和數據庫之間的通道。應用程序使用它將SQL語句發送給數據庫。數據庫進行操作并 將執行結果通過這個通道返回。一個連接和一個數據庫用戶帳號相關聯,這樣可以使數據庫對通 過連接提交來的SQL語句執彳亍訪問控制檢查。連接也是數據庫事務(transaction)的邊界。一個 事務由若干SQL語句組成,這些語句作為一個原子操作要么都成功執行,要么都失敗。事務可 以提交(commit)(所有對語句的修改都被永久保存)也可以回滾(rollback)(所有修改都被忽 略),這些都要通過調用Connection的方法來實現。
在一個獨立的應用程序里,一個連接通常只被創建一次,直至應用程序結束時才關閉。這樣 做并不奇怪,因為一個獨立的應用程序在某一個時刻只需要服務于一個用戶、由單一用戶啟動的 數據庫操作彼此之間通常都是有聯系的。而在一個處理來自不同用戶的無關請求的應用服務器應 用程序中,如何處理連接還不是很明顯。有三件事需要考慮:創建連接需要時間;在某一時刻連 接必須服務于一個用戶,以免造成沖突;連續保持打開的代價很大。
創建一個連接大概需要1一2秒種。除了建立到數據庫的網絡連接之外,數據庫引擎還要對 用戶進行身份驗證,并用各種數據結構創建一個環境以便記錄事務、緩存的語句和結果等等。為 服務器所接收的每一個請求都創建一個連接,實現起來雖然很簡單,但在事務較多的服務器應用 程序中,它的時間開銷太大。
減少創建連接次數的一個辦法就是,為每個需要訪問數據庫的servlet或JSP頁面維護一個連 接。可以在對網絡資源進行初始化時創建連接、并以實例變量的方式將它保存起來,直至應用程 序關閉時為止。隨后我們會發現,當我們用這種方法部署應用程序時會導致多線程問題。每個請 求都通過同一個servlet或JSP頁面執行一個獨立的線程。許多JDBC驅動程序并不支持多線程訪 問同一個連接,這樣就會出現很多運行時錯誤。那些支持多線程的驅動程序會將所有調用都串行 化,這樣又會降低可伸縮性。這樣做所產生的一個更嚴重的問題是來自不同用戶的請求(都使用 了同一個連接)對相同的事務進行操作。如果一個請求試圖回滾,那么所有使用相同連接的數據 庫操作都要被回滾。
連接保持打開的代價很大,尤其是在系統資源方面,很多商業數據庫產品都使用按照同時打 開的連接數目定價的執照,所以從金錢方面來看連接的代價也很大。因此,應當盡量減少應用程 序所需要的連接數。一個解決辦法就是“一個資源一個連接”,也就是說,當數據庫接收用戶的 第一次請求時為用戶創建一個連接(每個用戶一個連接),并將這個連接作為一個會話作用域對 象。然而,這樣做的缺點是連接在大多數情況下是不活動的,因為用戶每次查看請求結果之間有 較長的時間間隔。
最好的解決辦法是使用連接池(connection pool)»連接池中保存了一些Connection對象,這 些對象被所有servlet和JSP頁面共享。對于每個請求都會分配給它一個連接,使用完后再收回這 個連接。使用這種方法解決了上面提到的問題:
解決問題1:創建連接需要時間。放入池內的連接只被創建一次,以后一直重用這個連接。 大多數連接池的實現都允許我們在啟動時指定Connection對象的初始化個數和最大個數。如果需 要就可以創建新的Connection抓對象,直到達到最大個數。一旦達到了最大個數,連接池的客戶 就必須等待一個已有的Connection對象用完,而不能再創建新的Connection對象。
解決問題2:共享連接會造成多線程問題。每個請求將得到它自己的Connection對象,所以 在某一時刻它只被一個線程使用,從而避免了潛在的多線程問題。
解決問題3:連接的資源有限。有了連接池之后,每個連接都會得到有效地利用。如果有很 多請求掛起,連接就很難在連接池中休息。如果連接池允許我們指定Connection對象的最大個數, 我們還可以根據響應時間權衡并發連接的個數。
然而,連接池并不解決所有問題。因為所有用戶都在使用一些相同的Connection對象,所以 我們不能依靠數據庫引擎來限制對受保護數據的訪問(對受保護的訪問應當是每個用戶一個連 接)。相反,我們必須根據用戶的不同角色(具有相同訪問權限的用戶組)來定義數據訪問規則。 這樣我們就可以針對不同角色的用戶使用不同的連接池,每個連接池根據用戶角色的帳號來創建 Connection 對象。
JSP和Servlet作為提供Web動態內容的一種方法與其它技術相比較,在易用性、效率、安 全性和可移植性方面都有很好的表現。JSP的應用程序中通過JAVA數據庫連接(JDBC)與數據 庫引擎相互作用。在Web環境下,當有大量的用戶對數據庫進行訪問時,如何對JSP和數據庫的 連接進行管理是一個很重要的問題,這會對系統的效率帶來很大的影響。本文針對這種情況,分 析目前的幾種數據庫連接管理方法的優缺點,并討論釆用數據庫連接池模式的設計方法和應注意 的問題。
3.3幾種不同的連接方式
當有多個用戶連接系統時,在同一時間內很有可能會不止一個用戶需要數據庫連接,我們可 以有下面的幾種數據庫連接的管理方法:
•為每一個連接請求建立一個新的數據庫連接;
•在系統初始化時建立一個連接,所有對數據庫的通信都通過此連接進行;
•為數據庫連接創建一個連接池,在連接池中管理著限定數目的數據庫連接。
第一種方法的實現最簡單,在任何時候都可以處理數據庫的多用戶并發請求。但在Web站點 中用數據庫存儲的信息生成Web頁面時,每一個頁面請求都需要一次新的數據庫訪問。連接數據 庫不僅要開銷一定的通訊和內存資源,還必須完成用戶驗證、安全上下文配置這類任務,因而往 往成為最為耗時的操作。更嚴重的問題是,當有大量的用戶登陸站點時,系統的承受能力會受到 考驗。首先,系統能處理的并發請求數量受RDBMS和JSP引擎的限制。其次,系統能并發請求 的數量受系統資源的限制,如系統內存不足以支持這些連接的通訊資源的話會導致系統癱瘓。
第二種方法可以免除每次請求時初始化和釋放數據庫連接的開銷,而且不會有系統并發處理 的問題。但由于只使用一個物理數據庫連接,所有通過這個連接的請求只能串行執行,也就是說, 系統在處理完畢前一個用戶請求之前無法處理下一個用戶請求,這樣必然影響數據庫的效率。當 有多個并發的請求到達服務器時,不能被處理的請求只能由較底層次的套接字和網絡協議封鎖, 通常釆用緩沖機制。因此,當系統的緩沖不足時,也有系統崩潰的危險。
第三種方法從某種意義上來說是第一種和第二種方法的折中。我們使用專門的管理程序來創 建和維護數據庫連接池,當需要一個數據庫連接時,通過此管理程序來獲得連接,當結束一個數 據庫連接時,此連接交還連接池管理程序。在小負載的系統中,連接池的功能不能體現,但隨著 負載的增加系統的性能會有體現。使用這種方式可以達到系統中資源和性能的平衡,而且實現的 方式也不復雜。
3. 4連接池技術
3.4.1數據庫連接池技術的原理
連接池顧名思義,就是眾多連接對象的“緩沖存儲池”,也就是連接對象的集合體。連接池 內部提供一種管理機制,能控制連接池內部連接對象的個數,對應用程序提供獲取和釋放連接的 接口,完善的連接池還應能控制連接對象的生存期。
對象連接池是一種管理和重用一組對象的技術。因為生成Connection對象屬于資源占用最多 的一類操作,因此最常用的對象緩沖池通常是連接緩沖池。在JDBC中,一個Connection對象代 表著一個本地數據庫連接(內存中的數據庫除外,這種情況在實際中很少使用)。數據庫服務器 必須分配通信和內存資源以及驗證用戶,并且為每個連接建立安全環境。盡管有多個參數來指出 獲得一個連接的時間,也經常會見到連接時間為1或2秒(取決于連接、數據庫符合等)。通過 在客戶之間共享一組連接,而不是在它們需要的時候都為它們生成,這樣就可以改善資源使用, 因此提高應用程序的響應能力。
數據庫連接池可以為大多數訪問數據庫的服務器方應用程序帶來益處,使用數據庫連接池技 術的條件是:
•用戶通過一組較少的公用數據庫用戶帳戶來訪問數據庫。其替代形式為每個用戶使用一 個專門的帳戶。在以因特網為中心的應用程序中,使用公共用戶帳戶的情況更常見。
•數據庫連接只用于一個請求的過程,與用于來自相同會話的多個請求相結合的過程相 對。
3. 4. 2工作機制
這里結合JSP技術,對連接池的工作機制做以下探討。連接池主要由三部分組成:連接池的 建立;連接池對連接的管理;關閉連接池。連接池建立時,連接池應從數據庫一次性獲取預設數 目連接對象,作為可分配的自由連接。連接池對連接的管理部分是連接池機制的核心,外部JSP 服務線程需要訪問數據庫時,不是直接同數據庫建立新的連接,而是向連接池申請一個連接。若 連接池有空閑的連接,則分配一個連接,反之,若此時無可用的連接,這里連接池就會充分利用 JAXA的線程同步機理,使當前服務線程處于等待狀態,直至有空閑的連接出現。JSP服務線程對 數據庫訪問完畢后,應向連接池釋放連接,而不是關閉連接,連接池這時激活等待連接的其它JSP 服務線程,并分配連接。關閉連接池即連接池向數據庫歸還所有的連接對象。
圖例 © 正在使用的連接 O被返回連接池的連接
•連接池中的連接(準備好)
圖3-5連接池工作機制
3.4.2.1傳統連接緩沖池
采用這種技術的時候,應用程序需要完成下列處理:
•獲得對連接緩沖池或者管理多個緩沖池的對象的一個引用
•從一個緩沖池中獲得一個連接
•使用此連接
•把連接返回到緩沖池
這種老式模式的實現包括一個管理一組JDBC Connection對象的類。這樣一個類為初始化這 個緩沖池提供方法,還提供了獲得連接、返回連接的方法。這個類的客戶在獲得連接之前先初始 化這個緩沖池。圖3-6顯示了這個原理。
圖3-6傳統模式連接緩沖池原理
從圖3-6中可見,連接緩沖池是由客戶來處理的。客戶應用程序生成緩沖池、檢索連接,再 釋放連接。此外,這種方式要求有來自客戶應用程序的嚴格的約定:
•客戶應用程序不能關閉連接;它只應該把連接返回到連接池。但這個約定不能在客戶應 用程序上嚴格的保證。如果客戶程序在把連接返回之前意外關閉了連接,則這個連接就 將無法再使用,緩沖池將刪除對它的引用,然后在必要的時候再重新生成。
•當客戶在一個事務中使用Connection對象時,忘記了結束(提交或回卷)這項事務, 則連接緩沖池檢測不到這種情況。這樣會使應用程序事務混在一起,從而喪失數據的一 致性。
這種老式的連接緩沖池只有在共享相同運行時間的客戶中有效。這是一個客戶方的緩沖池。 當多個客戶應用程序都要求獲得連接時,這種傳統的緩沖池就不適用了。在這種情況下,更合適 的選擇是服務器方的連接緩沖池。當每個客戶維護他自己的連接緩沖池時,很可能連接重用并不 會以最優的效果運行。
傳統連接緩沖池的根本缺陷在于這樣一個緩沖池并不使用于分布式事務。它還會給像Web 容器這樣的容器管理的環境帶來災難,因為它強迫你在靜態變量中保持連接,而在這種方式下容 器無法實現其訪問控制。
3.4.2.2使用javax.sql包的連接緩沖池
javax.sql包提供了連接緩沖池的一個透明的解決辦法。采用這種技術,應用程序服務器或數 據庫驅動程序可以內部處理連接緩沖池的操作。
圖3-7使用javax.sql包的連接緩沖池原理圖
與傳統連接緩沖池相比,不同之處在于應用程序服務器與JDBC驅動程序協作維護的額外的 連接緩沖池。這意味著對于JDBC客戶應用程序不需要再有額外的編程要求,而是需要由J2EE 服務器的系統管理員在應用服務器上配置一個連接緩沖池。準確的語法與類名是與具體實現相關 的。在遵守JDBC2.0的應用程序服務器和數據庫驅動程序中,服務器系統管理員一般會進行下列 指定:
•—個實現 javax. sql. ConnectionPoo 1 DataSource 接 口的類
•一個實現java. sql. Driver接口的類
•緩沖池的大小(最大和最小尺寸)
•連接時間限制
•驗證參數
javax.sql包為實現連接緩沖池指定了三個接口和一個類:javax.sql.ConnectionPoolDataSource> javax.sql.PooledConnection、javax.sql.ConnectionEventListener 和 javax.sql.ConnectionEvent。
•javax. sql. ConnectionPoolDataSource 接口:這個接口與 javax. sql. DataSource 接口 類似。它不是返回Connection對象,而是返回javax. sql. PooledConnection對象。也 就是說,連接緩沖池數據源是緩沖池連接對象的一個工廠(factory)。即使在配置了連 接緩沖池之后,應用程序仍然使用javax. sql. DataSource對象來獲得連接對象,這是 DataSource實現的一部分。連接緩沖池對于應用程序代碼仍然保持透明。系統管理員 在建立了連接池之后,應用程序就可以自動開始使用連接池中的連接了。
•javax. sql. PooledConnection接口:打開了連接緩沖池處理后,本接口的對象保持著 一個實際的數據庫連接。緩沖池中的連接和普通連接的區別在于,首先,這種連接是 JDBC客戶應用程序中的一個實際的連接。在JDBC連接緩沖池處理中,Connection對象 并不包含實際的數據庫連接。應用程序獲得的實際上是一個常規的Connection對象。 Connection對象對于所有數據庫訪問都使用緩沖池中的Connection對象所包含的實際 連接;其次,當調用close0方法時,實際的連接并沒有關閉。DataSource實際只是刪 除了連接對象與緩沖池中Connection對象之間的關聯。因此可以在使用之后關閉連接, 此后數據源可以重用緩沖池中的連接;最后,應用程序不需要把Connection對象返回 到任何緩沖池,只要關閉它即可,就像沒有使用連接緩沖池一樣。
•javax. sql. ConnectionEventListener 接口:此接口有兩個方法 connectionCloseO 和 connectionErrorOccuredO 0第一個方法在應用程序調用close()方法時被調用。連接 池為重復使用而對連接做標記;第二個方法在出現致命連接錯誤時被調用。連接緩沖池 在出現這種事件時會關閉Connection,并且把它從緩沖池中刪除。
•javax. sql. ConnectionEvent類:這個類代表著與連接有關的事件。連接緩沖池會向池 中的連接添加連接事件偵聽器,而連接偵聽器會在出現連接事件時得到通知。
在典型的實現形式中,應用程序調用數據源的getConnection()方法時會經過下列兩個步驟:
•數據源先查看一個空閑的PooledConnection對象。如果有,則連接緩沖池會返回一個 PooledConnection對象到這個數據源。接著這個數據源調用這個PooledConnection對 象的getConnection 0方法,返回一個Connection對象。
•如果在連接池中沒有空閑的PooledConnection對象可用,則此數據源會使用個連接 緩沖池數據源來獲得一個新的緩沖池中的連接。
由于一個連接實際上就是緩沖池中連接的一個句柄(它保持著網絡連接),因此可以使用相 同的緩沖池中的連接來生成和關閉一個連接許多次。不僅如此,客戶API仍然保持相同,這是因 為連接緩沖池的細節永遠也不會暴露給應用程序。
總結:這種方式的主要優點在于簡單,對于客戶應用程序開發者、系統管理員都是如此。系 統管理員可以獨立于所有應用程序打開/重新配置連接緩沖池。
第四章內容管理系統的分析與設計
4.1系統的需求分析
中國農業機械裝備網的建設目標是成為國家級的農業機械裝備數據庫和信息網絡平臺,為企 業、科研單位和個人用戶提供專業信息服務,實現信息檢索查詢、數據統計分析、最新行業動態、 政策法規、行業標準、商務信息等多種用戶需要的功能。
中國農業機械裝備網主要包括企業信息模塊、產品信息模塊、行業新聞模塊、政策法規模塊、 專利信息模塊、技術成果模塊、商務信息模塊和標準信息模塊。
結合農業機械裝備網的具體需求和實際情況,在對內容管理的實現方法做了深入研究后,作 者開發了農業機械裝備網內容管理系統,并通過此系統實現了行業新聞模塊和商務信息模塊的功 能。
農業機械裝備網內容管理系統的目的是實現站點的建設維護中的分工協作,把內容創作、美 工設計、系統維護的職責分離。它讓網絡專業技術人員來負責系統的建立和維護,并使機構中非 IT專業人員的普通用戶能夠通過簡單的培訓,利用常用的界面或者工具就能夠將表單、欄目、新 聞等內容發布到站點上去。而美工人員則可以專注于系統的界面風格設計,如圖4-1所示:
通過對農業機械裝備網的項目需求進行分析和提取,在內容管理方面會有如下需求:
1、能夠比較靈活的定制欄目,而且能夠在任意位置放置這些欄目;能夠增加多種類型的欄 目,還可以達到讓這個欄目的信息滾動,顯示發布日期等目的。
2、 能夠比較方便的去管理網站的圖片、文檔等一切資源,達到資源共享。使用的時候,能 夠比較方便快捷的查詢。
3、 能夠比較方便地對信息發布、錄入、修改、刪除;能夠對信息的安全性和權限進行控制, 保證信息訪問的安全性和靈活性。
4、 能夠使網站風格進行統一,可以提供一些模板,也可利用其它的工具做好模板,直接在 內容管理系統中使用,對其能夠導入、刪除和修改。
5、 可以達到在任意地點和時刻進行網站發布,把動態的內容利用靜態的頁面發布出去,提 高網站的訪問速度。
6、 提高系統的擴展能力,集合其它系統的功能,滿足以后系統升級的需要。
4.2系統的目標
4. 2.1系統的性能指標
農業機械裝備網內容管理系統在性能上應能達到下列指標:
1、 實用性和靈活性
實用性和靈活性是內容管理系統的首要考慮的特性,系統必須滿足大部分的網站建設和維護 的需要,它的出現就是旨在提高內容管理和發布的效率。在軟件設計中,以方便用戶的使用為標 準,統一編碼規則、統一界面風格使用戶經過簡單的培訓就可以勝任所有的工作。
2、 先進性
•釆用目前市場上成熟的先進的技術,利用當前最流行的語言JAVA;先進的軟件思想, 如組件思想,設計模式等應該滿足現有網站內容管理的需求,能夠輕松實現與其它應用 系統的集成,提供與其它系統的接口。
•系統的可擴展性:考慮到內容管理的不斷升級,會在將來對內容管理提出新的需求,內 容管理系統應該能夠在不改變現有系統架構的情況下,平滑地接受這種擴展,無縫地將 其集成到現有的系統中來。
•系統要具有良好的可維護性。
•便攜性:內容管理系統要能夠實現隨時隨地的辦公,無論用戶身處何地,無論在什么時 間,只要接入Internet網絡,就可以隨時隨地辦理一些相關的業務。
•要有較快的響應速度和較高的工作效率,有效處理數據的并發操作,保持系統運行穩定。
•在信息資源被共享的同時,其保密性也要加強。采取有效地安全管理機制,對不同用戶、 各種信息的訪問具有嚴格的權限。
3、 可靠性
可靠性是指系統使用的軟、硬件可靠程度。使系統在運行中不發生或極少發生故障,在偶然 事故及操作失誤時,系統應具有較強的信息保護能力,不應該造成數據信息的丟失和破壞。
4、 安全性
內容管理系統管理整個網站的所有資源,因此對系統的安全性要求非常高,一方面要保證數 據一致性,另一方面又要在非常情況下保證數據的丟失減少到最低限制。對用戶的使用和后臺系 統的維護上,嚴格控制訪問的權限和等級,從而提高系統的安全性。
5、可擴展性
考慮到系統的升級功能,必須在設計的時候保持系統的良好的可擴展性。同時提供與其它系 統的接口,以便系統能夠集成其它的功能。
4. 2. 2系統的功能指標
農業機械裝備網內容管理系統的主要功能如圖4-2所示:
1、 登陸模塊:是內容管理系統的入口,保證系統的管理用戶能夠進入進行管理,防止非管 理用戶進入。
•提供身份驗證,包括用戶名和密碼
•根據管理用戶的身份,分配相應的管理權限。管理用戶共有三級,分別是系統管理員、 管理員和錄入員。其中,系統管理員權限最大,管理員次之,錄入員最小
2、 欄目管理模塊:是內容管理系統中內容分類管理的依據,設計為二級管理。
•管理用戶可以根據需要創建一個新欄目,包括欄目名稱和ID號信息
•能對已經存在的欄目名稱進行編輯修改
•能夠刪除系統中不需要的欄目
•能夠在某一具體欄目的下面創建新類,包括類名和ID號,相當于欄目是第一級,類別 是第二級
•對已經存在的類別,可以進行編輯修改
•對不需要的類別,能夠進行刪除
3、 用戶信息管理模塊:是系統管理員對后臺管理用戶信息的管理維護模塊。
•無論是什么級別的管理員,都能對其個人信息進行管理,包括用戶名和密碼的修改
•系統管理員可以添加新的管理員或錄入員,并設定其用戶名和密碼
•系統管理員可以刪除已經存在的管理員或錄入員
•管理員級別的用戶能夠對錄入員進行管理,包括添加新錄入員和刪除已經存在的錄入員
4、 新聞管理模塊:是內容管理系統中對新聞信息進行管理的模塊。
•新聞的添加和發布,新聞的屬性包括標題、作者、出處、內容、時間、所屬類別等基本 屬性
•新聞的編輯修改、刪除,可以進行批處理
•快速定位具體新聞,提供查找功能
•支持圖片新聞的功能,能夠保持新聞內容的格式
5、 商務信息管理模塊:是對前臺普通用戶發布的商務信息進行管理的模塊。
•審核注冊的商務信息,符合條件的商務信息進行發布
•刪除不恰當的數據信息
•管理前臺注冊用戶信息
4.3系統的總體設計
4.3.1系統的結構
農業機械裝備網內容管理系統是一個基于J2EE技術的信息系統,它本身的應用屬性與應用 范圍決定了它只能采用B/S結構;同時由于內容管理系統涉及到復雜的業務邏輯,因此內容管 理系統設計為基本B/S結構的三層結構,既極其簡化了系統的部署與管理,又有強大的功能,建 立具有高度可伸縮性和可靠性的動態Web應用。
農業機械裝備網內容管理系統采用基于B/S的由表示層、應用層和數據服務層組成的三層 結構,具體如圖4-3所示。其中八用戶通過瀏覽器實現交互,WEB瀏覽器根據用戶的請求操作, 向WEB服務器發送訪問請求信息,消息中包含了請求的性質、資源的位置和服務器完成請求所 必須的其它消息。應用服務層由Web服務器和相關的中間件程序組成,用于處理復雜的業務應 用邏輯、數據處理。數據服務層由數據庫服務器和數據庫組成,完成數據存儲、數據緩沖及各項 數據庫管理任務。
這樣的劃分目的在于:一是改善應用程序的伸縮性,減少所必須的數據庫連接數目。三層結 構模式使得每一個消耗資源的客戶程序不直接訪問數據服務器,而是與業務層中的服務進行通 訊,同時一個服務可以向多個客戶提供服務,這樣就降低了資源消耗,提高了伸縮性;二是將表 示層與具體的數據存儲細節隔離開。正因為表示層與數據層相隔離,所以數據層中數據存儲的格 式或位置發生變化,不會影響到表示層。
4.3. 2網絡拓撲結構
網站的網絡平臺包括網站局域網、Internet接入、企業內外系統連接三部分,網站局域網包 括防火墻、路由器、交換機、Web服務器、數據庫服務器、應用服務器、郵件服務器、存儲設備 等,具體設備的選型根據企業網站的規模、提供的應用服務、安全需求進行相應的設計。對于大 中型企業來說,網站局域網可采用分布式體系結構,將網站的不同功能模塊分布在不同的服務器 上,減少系統的單故障節點,并有利于系統的擴展。同時可結合雙機熱備份技術,提高系統中關 鍵功能模塊的可靠性。
4.4系統的數據結構設計
4.4.1數據庫設計原則
數據庫的設計關系到整個系統性能、升級和移植的問題,在數據庫設計的時候主要考慮了以 下幾個原則:
1、 命名的格式要規范
不同的數據庫產品對對象的命名有不同的要求,因此,數據庫中的各種對象的命名、后臺程 序的代碼編寫應采用大小寫敏感的形式,各種對象命名長度不要超過30個字符,這樣便于應用 系統適應不同的數據庫。
2、 索引的使用原則
使用索引可以保證被索引列的唯一性和明顯提高查詢性能。但是,系統為維護索引,必將增 加許多額外的開銷,會降低插入、更新、刪除操作的性能。所以,索引的使用是否恰當,對系統 性能的影響很大。合理的使用索引,要注意以下幾點:
•表的規模不大時,不應該使用索引
•表需要頻繁更新時,維護索引的開銷大于使用索引減少的開銷,所以這類表最好不要建 立索引
•查詢字段不確定的表不要使用索引,因為維護索引開銷較大而不確定的查詢字段使得索 引并不能充分發揮作用
•選中度過大的查詢不要使用索引,對系統的性能提升不大
3、 數據的一致性和完整性
為了保證數據庫的一致性和完整性,設計人員往往會設計過多的表間關聯(Relation),盡可 能的降低數據的冗余。表間關聯是一種強制性措施,建立后,對父表(ParentTable)和子表(Child Table)的插入、更新、刪除操作均要占用系統的開銷。如果數據冗余低,數據的完整性容易得到 保證,但增加了表間連接查詢的操作,為了提高系統的響應時間,合理的數據冗余也是必要的。 使用規則(Rule)和約束(Check)來防止系統操作人員誤輸入造成數據的錯誤是設計人員的另 一種常用手段,但是,不必要的規則和約束也會占用系統的不必要開銷,需要注意的是,約束對 數據的有效性驗證要比規則快。所有這些,設計人員在設計階段應根據系統操作的類型、頻度加 以均衡考慮。
4、 數據庫性能的調整
在計算機硬件配置和網絡設計確定的情況下,影響到應用系統性能的因素不外乎為數據庫性 能和客戶端程序設計。而大多數數據庫設計員采用兩步法進行數據庫設計:首先進行邏輯設計, 而后進行物理設計。數據庫邏輯設計去除了所有冗余數據,提高了數據吞吐速度,保證了數據的 完整性,清楚地表達數據元素之間的關系。而對于多表之間的關聯查詢(尤其是大數據表)時, 其性能將會降低,同時也提高了客戶端程序的編程難度,因此,物理設計需折衷考慮,根據業務 規則,確定對關聯表的數據量大小、數據項的訪問頻度,對此類數據表頻繁的關聯查詢應適當提 髙數據冗余設計。
4.4. 2主要表結構
1、news 表
news表的設計是用來存儲新聞信息的,一條信息應包括標題、作者、時間、內容和出處等等 屬性信息,表的字段名稱、數據類型和意義設計如表4-1所示:
表4-1 news表的數據結構
字段名稱 數據類型 長度 意義
newsld int 4 序號
classld Int 4 分類號
kindld Int 4 二級分類號
myOther Int 4 是否原創
headTitle Varchar 255 新聞題目
Content Text 16 新聞內容(正文)
connectNews Varchar 255 相關新聞
Author Varchar 50 作者
Editor Varchar 50 編輯
newsFrom Varchar 50 來源
topNews Int 4 是否頭條
newsTime Varchar 50 發布時間
Hits Int 4 點擊數
State Int 4 狀態標識
Tag Int 4 標志
2、newsadmin
newsadmin表是用來對管理員和錄入員信息進行存儲的,其字段項有用戶名、密碼、用戶級 別、最后登陸時間和登陸IP地址等信息,其意義如表4?2所示:
表4-2 newsadmin表的數據結構
字段名稱 數據類型 長度 意義
username Varchar 20 用戶名(登陸名)
passWd Varchar 20 密碼(登陸密碼)
Purview Int 4 級別(是否是管理員)
LastLogin Datetime 8 上次登陸時間
lastLoginlp Varchar 20 上次登陸IP地址
3、newsclass 表
newsclass表是對分類中的類別進行存儲,并且是一級分類的信息,包括類別號和類別名稱等
字段,其意義如表4?3所示:
表4-3 newsclass表的數據結構
字段名稱 數據類型 長度 意義
classld Int 4 欄目號
Content Varchar 50 欄目名稱
4、newscommon
newscommon表用來記錄管理員的登陸次數和登陸的IP地址
表4?4 newscommon表的數據結構
字段名稱 數據類型 長度 意義
Counter Int 4 登陸次數
Ip Varchar 50 登陸地址
5、newskind 表
newskind表把一級分類和二級分類聯系起來,具體定義如表4-5所示:
表4?5 newskind表的數據結構
字段名稱 數據類型 長度 意義
kindld Int 4 二級分類號
Content Varchar 255 類名稱
classld Int 4 一級分類號
6、business_infb 表
business.info表的作用是用來存儲商務信息的所有內容,主要是信息的基本屬性,具體如表
4?6所示:
表4-6 business info表的數據結構
字段名稱 數據類型 長度 意義
Id int 4 標識
Infb_Name varchar 100 信息標題
Content text 16 信息內容
Company varchar too 公司名稱
ContactPerson varchar 50 聯系人
Telephone varchar 20 電話
Fax char 10 傳真
Address varchar 200 地址
Postcode int 10 郵編
Website varchar 50 網址
Email varchar 50 電子信箱
Style int 4 信息類型
UserName char 30 用戶名
ReleaseTime datetime 8 發布時間
State int 4 信息狀態
7、business_infb_type 表
business_info_type表用于存儲商務信息的類型以及類型代碼編號:
表4?7 business info type表的數據結構
字段名稱 數據類型 長度 意義
Id int 4 標識
Type char 10 信息類型
Code int 4 類型代碼編號
8、business_register_user 表 business_register_user表用于存儲前臺用戶注冊的基本資料:
表4?8 business registei^user表的數據結構
字段名稱 數據類型 長度 意義
Id int 4 標識
Name varchar 50 姓名
Username varchar 50 用戶名
Password varchar 50 密碼
Company varchar 100 公司名稱
Address varchar 150 地址
Postcode int 10 郵編
Fax int 15 傳真
Email varchar 50 電子郵箱
RegisterTime datetime 8 注冊時間
4. 5系統詳細設計
4.5.1身份驗證與授權模塊的設計
4.5.1.1系統整體安全設計
信息安全研究防止信息內容被故意地或偶然地非授權泄露、更改、破壞,或使信息被非法地 系統識別、控制的各種機制,它可確保信息的完整性、保密性、可用性和可控性。確保信息安全 可以從以下幾個方面入手:
•操作系統安全:對操作系統安全的研究可分為兩個方面。一是操作系統的整體安全,即 指從系統設計、實現和使用等各個階段都遵循了一套完整的安全策略的操作系統,這些 安全策略可以按需要分成不同的級別;另一是研究操作系統的安全部件,包括通過構造 安全模塊等來增強操作系統的安全性。
•數據庫安全:它一般采用多種安全機制與操作系統相結合的方式來實現數據庫的安全保 護,其形式與操作系統類似。
•網絡安全:提供訪問網絡資源或使用網絡服務的安全保護,研究內容包括網絡安全管理、 網絡安全系統和網絡系統的安全部件。
•計算機病毒防護:對病毒防護的目的主要是保護網絡資源,方法有防火墻技術和防毒軟 件等。
•訪問控制:主要是通過主體訪問客體時的權限控制來實現。
•數據加密技術:主要包括加密體制和加密算法,用于保護存儲和傳輸過程中的數據。
農業機械裝備網內容管理系統在安全性方面進行了周密的設計,服務器端操作系統做了身份 驗證設置,只有管理員才能進入;在數據庫安全方面設置用戶和角色,做到分級別可控管理:在 網絡安全方面,設置防火墻和過濾規則,避免計算機病毒侵入系統;在訪問控制方面,本系統在 后臺管理入口做了身份驗證控制,來確保系統資源的安全。
4.5.1.2身份驗證和授權設計
農業機械裝備網內容管理系統是只有管理員身份的用戶才可以進入來進行系統管理,本系統 在用戶身份和權限上做了三級管理和權限控制。最高級別的是系統管理員,具有此身份的用戶能 夠進行所有功能和信息的管理,具有決對權限;第二級別的是管理員,具有此身份的用戶能夠進 行后臺用戶管理和新聞管理,而不具有類別管理和商務信息管理的權限;第三級別的是錄入員, 具有此身份的用戶只能夠進行新聞信息的發布和個人信息的管理,而不具有分類管理、用戶管理 和新聞修改等權限。其用例圖如圖4-5所示:
管理入口的身份驗證設置了用戶名和密碼匹配驗證方式,如果用戶名和密碼都匹配成功,則 表明此用戶是系統管理者身份,接下來進行權限驗證,其目的是看此管理者具體是什么身份和具 有什么權限,如果此用戶具有系統管理員權限,則進入系統進行系統管理員的權限級別管理;如 果此用戶具有管理員權限,則進入系統進行管理員的權限級別管理;如果此用戶具有錄入員的權 限,則進入錄入員的權限級別管理;如果用戶名和密碼驗證不成功,則表明此用戶不是系統管理 者,不具有管理權限,不能進入系統。其流程圖如圖4-6所示:
在與數據庫通信方面,是利用newsadmin表來做身份和權限驗證分析的數據依據,其表結構 如表4-2所示。
說明:newsadmin表中的字段Purview的含義是代表管理用戶的身份級別,其數據類型是Int, 本系統在設計時,規定數字0代表此用戶是系統管理員級別,數字I代表管理員級別,數字2代 表錄入員級別。
這樣設計的優點是:方便管理者對系統的管理。系統管理員可以創建多個管理員用戶和錄入 員用戶,并分配給不同的人,讓多個具有新聞錄入權限的用戶進行信息發布,而管理員在具有錄 入的權限的同時,對錄入員進行管理,這樣系統管理員的繁重的工作將被管理員和錄入員分擔, 系統管理員只需要保證系統的正常運行就可以了。
4.5.2類別管理模塊設計
4.5.2.1信息分類學研究和實際意義
信息分類學是網站開發人員的好伙伴,它可以幫助他們達成在設計網站時需要考慮的兩個非 常重要卻又容易忽視的目的:用戶滿意度和投資回報程度。如果在設計時對信息分類考慮較少甚 至不予考慮,那么就算效率再高的搜索引擎也難以圓滿實現這兩個目的。
在互聯網出現以前,公眾獲取信息或知識的一個主要途徑就是圖書館。借助專業的信息檢索, 圖書管理員知道如何通過布爾邏輯、加號、減號以及其他符號完成復雜的查詢工作。這種復雜的 查詢依賴于對信息架構的正確分類和明確標記。但是當互聯網興起時,人們認為解決信息查詢問 題的方法就是將大量信息一股腦的拋到這個信息高速路上,而沒有考慮該如何組織這些信息。
這種局面造就了搜索引擎,這個在整個互聯網上辛苦搜集信息的工具。不幸的是,我們中的 大多數人都沒有受過圖書管理方面的培訓,無法準確告訴搜索引擎我們所需信息的關鍵詞。而互 聯網在經過幾年的迅速發展后,在我們面前的互聯網已經成為了一個無邊無際的電子信息海洋。 它帶給我們的好處就是超級豐富的信息量。然而由于沒有良好的內容結構,我們無法在這些信息 內容中快速找到所需信息,甚至根本就找不到所需信息,更糟的是也許我們找到的只是一堆不需 要的東西,而我們卻還在這堆垃圾中挑來揀去的尋找根本沒有的東西。
1、缺乏結構性帶來的問題
無結構性的互聯網內容帶來的問題無法用量化的標準來說明,因為借助搜索引擎,搜索者很 少知道為什么會搜到這個結果或者這個信息來源何處。因此,我們將網絡內容缺乏結構性帶來的 各種問題總結如下:
(1) 不成功的搜索所浪費的時間。
由于搜索者無法找到所需信息,因此信息收集存儲的投資回報很低,比如數據倉庫和內容管 理。
(2) 由于不完整或者不精確的信息造成的決策失誤。
不成功的捜索給搜索者帶來的不良體驗會破壞公司形象、公司與客戶/合伙人間的關系,以及 內部人員的關系。
2分類學給網站開發帶來的益處
生命科學家用分類學將所有的生物進行有組織的分類。圖書管理學家和信息科學家們也將這 種技術和方法用于信息搜索和數據檢索。借助于這種技術和方法,我們可以開發一種網絡分類框 架,將先前無法快速訪問的容轉換為具有結構性的Web內容以便于訪問。
分類學牽扯到網站開發的很多方面,比如網站設計、內容管理以及網站內容的搜索過程。下 面讓我們具體來看看分類學是如何給這些方面帶來益處的。
(1)分類學給網站設計帶來的益處
分類學具有兩個方面:結構分類和視圖分類。網站設計所涉及的更多的是視圖分類,它通過 將信息按主題分組達到將網站內容邏輯化的目的。在利用外觀分類實施網站設計時,我們可以利 用直觀的組織和標識來建立一個有效的網站導航系統。當網站內容彼合理的組織并有了清晰明了 的標識后,網站訪問者就可以輕松的導航和定位所需內容,這種體驗可以有效提高訪客的回頭率。
(2)分類學給網站內容管理帶來的益處
圖書館根據美國國會圖書館分類系統(Library of Congress Classification System)或者杜威圖 書分類系統(Dewey Decimal System)對書籍和雜志進行組織。每一項都用一系列標準屬性來標 記,比如圖書編目號碼、主標題、標題和作者等等。然后,這些書籍和雜志可以放心地入庫,以 后可用人工或計算機化的卡片編目來方便地檢索。
同樣,企業也可用結構分類來組織其信息資源如文檔、網頁等等。結構分類提供了一個層次 化的分類系統,它基于一個已經定義好的范圍和背景。在內容管理過程中,可采用結構分類的標 準術語來統一分類及標記信息資源。在內容管理工作流中,內容管理員通過提供一個層次化的類 別列表以推行分類結構。
最終的結果就是,企業或公司范圍內的所有信息都存儲到一個內容管理系統中,而且每項信 息都與一個或多個類別相關聯。之后就可通過一個視圖分類或者搜索引擎,在網上更有效地檢索 這些分類信息資源,這和傳統的圖書館檢索并沒有多大的區別。內容管理系統最終的目標就是使 企業的內容達到最大的可用性。因此將結構分類集成到內容管理過程中,就能改進內容管理系統 的可用性。
4.S.2.2類別管理模塊設計
為方便信息的組織和管理,農業機械裝備網內容管理系統在信息管理的分類設計上,采用二 級分類管理,第一級稱欄目管理,第二級稱類管理。類別管理模塊是對系統管理員開放的功能模 塊,對其它權限級別的管理員具有透明性。在發布新聞信息的時候,會選擇新聞應歸屬的欄目和 類別,也就是每一篇新聞信息都有兩個分類的屬性來表明它的類別。
1、欄目管理設計
對于第一級別的欄目管理,系統管理員可以創建新欄目、編輯修改已經存在的欄目和刪除不 需要的欄目。其用例圖如圖4-7所示:
圖4-7欄目管理用例圖
需要說明的是,在系統管理員進行欄目刪除時,如果有屬于這個欄目的二級分類,則這些二 級分類也將被從系統中刪除,還有就是屬于這個欄目的新聞信息也將被從系統中刪除。這樣設計 是保證欄目與子類、新聞信息的一致性。從邏輯上來講也必將如此。
同樣的,在系統管理員進行欄目編輯時,欄目的改動將影響到二級分類和新聞信息中的欄目 信息。也就是說,此處對欄目名稱的修改,二級分類中父類(欄目)和新聞屬性信息中的對應的 欄目名稱也要做相應的修改。
在數據庫設計中,newsclass表就是用來存儲欄目信息的,其結構如表4-3所示。
表結構說明:在表4-3中,與其它表相聯系的是字段classld,具體是說,在二級分類表中和 新聞屬性信息表中都有欄目編號這一字段,而不用出現欄目名稱,由于欄目編號和欄目名稱是一 一對應的關系,所以只要知道欄目編號就可以知道其欄目名稱。
2、類別管理設計
對于第二級的類管理,在功能設計上有創建新類、編輯類和刪除類。其中創建新類是在已經 存在的欄目中進行的。
系統管理員
圖4-8創建新類的活動圖
說明:圖4-8表明的是創建一個新類的活動圖,圖中創建新類這個活動是在創建欄目活動之 后執行的,他們存在一種順序關系;同樣,編輯類活動和刪除類活動是在創建新類后執行的,也 就是說創建新類必須先于這兩個活動執行,他們也存在一種順序的關系。
數據庫中newskind表是用來存儲二級分類數據信息的,也是把類和欄目聯系起來的紐帶,其 表結構如表4-5所示。
表結構說明:字段kindld代表二級分類編號,字段classld代表一級分類編號(欄自編號), 字段content代表類名稱,這樣每個類編號都與一個欄目編號對應,newskind表把欄目和類聯系 起來,可以查看每個具體類歸屬于具體的欄目,這也是newskind表設計的目的。
4.5.3用戶管理模塊設計
用戶管理模塊是對內容管理系統用戶的基本信息的管理,針對不同的角色,其管理的權限也 不一樣,其用例圖如圖4-9所示:
如圖4-9所示,系統管理員具有絕對權限,有添加管理員、添加錄入員、刪除管理員和刪除 錄入員的權限,并可以進行個人信息的管理;而管理員只具有刪除錄入員權限,并可以對個人信 息進行管理;錄入員沒有添加和刪除的權限,只能進行個人信息的管理。
由此可見,系統管理員權限最大,由它來設定管理員和錄入員的用戶名以及數量,并分配給 合適的人選;管理員的權限次之,但是能夠對錄入員進行管理;而錄入員權限最小,只能對自己 的信息進行管理。
個人信息管理主要是對密碼進行管理,也就是密碼修改。
與數據庫發生通信的表是newsadmin表,其結構如表4-2所示。
4. 5.4新聞管理模塊設計
新聞管理模塊是內容管理系統的核心模塊,它負責完成新聞信息的發布、修改和刪除。
如圖4-10所示,在新聞管理模塊中,系統管理員和管理員具有絕對權限,可以進行發布新聞、 修改新聞和刪除新聞的操作,而錄入員只有發布新聞的權限。
一篇新聞的基本屬性包括標題、作者、內容、所屬類別(包括欄目和類別)、編輯、岀處、 是否有相關新聞、是否原創、新聞圖片和圖片位置等信息。每一項屬性都存儲于數據庫中,news 表就是專門存儲這些屬性信息的,其表結構和含義如表4-1所示。
本系統可以發布帶兩張圖片的新聞,這樣就存在一個圖片數量的問題,共有三種情況: 情況一:發布的新聞不帶有圖片;
情況二:發布的新聞帶有一張圖片;
情況三:發布的新聞帶有兩張圖片;
在編輯修改新聞的時候,根據要編輯的新聞是否有圖片和圖片個數,修改時共有九種情況: 情況一:要修改的新聞沒有圖片,改后添加0張圖片;
情況二:要修改的新聞沒有圖片,改后添加1張圖片;
情況三:要修改的新聞沒有圖片,改后添加2張圖片;
發布新聞的過程如下:
•填寫新聞信息的各個屬性項
•對新聞信息進行檢查
•上傳新聞圖片(如果有圖片)
•把新聞信息插入數據庫
編輯修改新聞的過程如下:
•對要修改的新聞屬性項進行修改
•檢查修改后的新聞信息
•處理新聞圖片部分的內容(9種可能情況)
•更新數據庫中此條新聞信息
刪除新聞信息的過程如下:
•選擇要刪除的新聞信息
•刪除確認(避免失誤)
•從數據庫中刪除這條新聞內容
•刪除此新聞的圖片信息(如果有新聞圖片)
4. 5. 5商務信息管理模塊設計
商務信息管理模塊是針對前臺用戶注冊信息和發布的商務信息進行管理的模塊。主要功能包 括管理用戶信息、審核商務信息和刪除用戶信息等功能。其用例圖如圖4-11所示:
用戶信息的基本屬性應包括:姓名、用戶名、密碼、公司名稱、地址、郵編、傳真、電子信 箱和注冊時間共9項。
商務信息的基本屬性應包括:信息標題、信息內容、公司名稱、聯系人、電話、傳真、地址、 郵編、網址、電子信箱、信息類型和用戶名共12項。
用戶發布商務信息的具體過程如下:
•普通用戶進行注冊
•注冊成功后,進行信息發布
•系統管理員進行信息審核
•審核批準后,信息發布成功
系統管理員進行商務信息審核并批準的具體過程如下:
•列出所有待審信息
•查看每一條待審信息的內容,進行審核
•審核批準
第五章內容管理系統的實現
5.1系統開發平臺的建立
農業機械裝備網內容管理系統是在Windows XP操作系統上開發的,以Tomcat作為Web 服務器,使用JBuilder和Dreamweaver作為開發工具,Microsoft SQL Server 2000為數據庫服務 器,所有的業務邏輯封裝在JAVABEAN里,結果顯示用JSP文件和標簽來實現。
5.1.1數據庫的選擇
數據庫是數據存儲的重要部件,目前市場上數據庫的主流產品有IBMDB2、Microsoft SQL SERVER 2000. ORACLE 9i. Sybaseo 本系統選擇 Microsoft SQL SERVER 2000o
SQL Server是Microsoft公司在原來和Sybase公司合作的基礎上推出的一款面向高端的數據 庫系統。它推出后,得到廣大用戶的積極響應并迅速占領了 NT下的數據庫應用市場,成為數據 庫市場上的一支不容忽視的重要力量。經過不斷的更新換代,SQL Server已經發展到了 SQLServer 2000,它為企業基于Windows 2000的解決方案提供了一個首選數據庫系統,來自開發商的信息 表明,SQL Server 2000無論是在功能、安全性、可維護性還是易操作性上較以前的版本都有了長 足的進步。
SQL Server 2000除了繼承了來自以前版本的特點外,還結合了用戶的需求以及最新涌現的技 術。SQL Server 2000對Web的支持主要表現在以下三個方面:
1、 豐富的Web支持
事實上,SQL Server 7.0就是一款非常適合于Web的數據庫存儲系統。新推出的SQLServer 2000繼承了這一優秀傳統,并在以前的基礎上做了大量拓展。在新版本的運行過程中,SQLServer 2000主要具有以下幾大特點:
•豐富的XML和Internet標準支持:SQL Server 2000支持通過XML的數據插入、刪除、 更新和檢索操作。SQL Server 2000還提供了一個簡潔的模型供開發者開發應用程序。 同時,它還全面支持W3C制定的技術標準。
•簡單安全的Web數據訪問:SQL Server 2000支持基于HTTP連接的數據訪問,并以新 的過濾機制實現了對格式化文檔的高性能全文檢索功能,簡化了自然語言查詢解決方案 的開發過程。
•強大靈活的基于Web的數據分析:SQL Server 2000擴展了已有的OLTP分析技術,發 布了先進的應用于ffeb數據分析的數據發掘工具和算法。同時SQL Server 2000還很好 的實現了 Commerce Server 2000的集成'首次實現了對用戶點擊情況的跟蹤分析。
2、 高度的可伸縮性和可靠性
SQL Server 2000所具有的高度的可伸縮性和可靠性,使其成為Web和電子商務應用的首選 數據庫系統。其所具有的伸縮性主要表現在以下兩個方面:
•電子商務應用的可伸縮性:SQL Server 2000支持在服務器群之間的負載自動均衡,從 而對大容量的并發訪問提供高速響應。SQL Server 2000還支持對查詢的自動優化和分 布式查詢,同時SQL Server 2000還針對對稱多處理器系統進行了優化,從而有效地保 證了充分發揮對稱多處理器的性能。
•數據倉庫的可伸縮性:SQL Server 2000提供了對超大規模數據的分析處理能力,支持 上千維的多維數據庫。
SQL Server 2000的可靠性主要表現在對錯誤的自動恢復和提前預測。簡化了錯誤恢復的操作 和配置,SQL Server 2000的數據庫可以在大多數操作下都保持在線狀態,從而避免了系統管理時 關閉數據服務。SQL Server 2000還提供了一種被稱為無偏差的快照備份服務,這種服務還集成了 事務日志分析和管理的功能。
3、高效的數據處理
SQL Server 一貫追求性能的提升,在SQL Server 2000中,對性能的考慮更加突出,正式發 布SQL Server2000以前做的測試表明,SQLServer確實是一款性能卓越的產品,其中的TCP-C 指標更是創下了世界記錄。SQL Server 2000對數據處理的高效性主要表現在以下幾個方面:
•高度集成并擴展的數據分析服務:SQL Server 2000提供對數據的在線分析、數據發掘 以及數據分析體系自動對應用程序的反饋等多種技術,這些技術的提出大大擴展了 SQL Server 2000的應用空間。
•簡化了的管理和調整工具:SQL Server 2000對管理工具進行了進一步簡化,它通過一 系列的向導來輔助系統管理員完成對SQL Server的管理,有效地減輕了系統管理員的 負擔,并大大減少了出現錯誤操作的機率。同時針對頻繁的數據庫調整工作,SQL Server 也提供了一系列的向導,這些向導不僅簡化了操作人員的工作量,而且,他們本身還具 有一定的智能,能自動對數據庫體系結構、數據庫索引、查詢和存儲過程等進行分析, 并把分析的最優方案提供給管理員,這對大規模和超大規模的數據庫應用來說是非常有 利的。SQL Server 2000還簡化了在不同數據庫之間的數據轉移操作。
•增強T-SQL語言的功能并簡化了對SQL程序的設計和調試:T-SQL語言(Transact Structure Query Language,事務-結構化查詢語言)是SQL Server的基礎語言。在SQL Server 2000中增加了 T-SQL語言功能,提供了一個界面友好的Query Analysis工具 對查詢進行分析優化。同時SQL Server 2000還支持服務器端對SQL語言的跟蹤和在客 戶端對SQL語句的統計等功能。
•靈活的數據轉移服務:在新的數據轉移服務模塊中,SQL Server2000提供了和MSMQ
(Microsoft Message Queue, MSMQ)的集成,并支持通過 FTP (File Transfer Protocol, FTP)對數據庫的訪問,發布了增強的0LEDB數據庫接口,還有效地解決了在發生錯誤 時的處理和修復技術。
5.1.2開發語言和工具的選擇
通過前面的分析,農業機械裝備網內容管理系統使用了 JSP+JAVABEAN的開發方式進行系 統開發。開發工具選擇JBuilder8.0和DreamweaverMX。JBuilder開發工具是當前最優秀的Java 程序開發之一,它以強大的功能和友好的界面,備受Java程序員的青睞。同時也可以開發JSP程 序,并有良好的編譯和調試功能。DreamweaverMX是Macromedia公司推出的主頁編輯工具, 是一個所見即所得的網頁編輯器,在本系統中主要開發靜態的頁面和具有動感效果的網頁。
5.1.2.1程序開發工具一JBuilder 8
目前,能夠進行基于Java的開發工具有很多,本系統的程序開發工具是JBuilder 8o JBuilder 是Borland公司出品的Java開發工具,作為業界領先的Java集成開發環境,JBuilder可以提供Java 程序的編輯、調試、編譯、運行等功能,支持幾乎所有的Java技術開發,從Java Applet. Java Application到J2EE、Web Service, JBuilder可以大大提供程序員的開發效率和軟件產品質量。 JBuilder 8較之以前版本,功能更加強大,其主要增強的方面如下:
1.JDK 1.4.1
在JDK 1.4.1上運行的JBuilder 8大大提高了開發的效率,在客戶端可以更高速的執行應用。 而且也增加了對鼠標滾輪的支持,在以前版本的JBuilder中,只有靠拖動滾動條來修改程序,現 在可以直接用鼠標的滾輪鍵來瀏覽代碼了。還提供了更多關于集中針對管理及Linux上的UI支 持。
2.Web應用程序開發
JBuilder8另外一個很重要的新特性是增加了對Struts的支持。Struts是基于Model2或MVC 的一個Web應用設計框架,目的是增強對軟件的設計。Model代表數據,View是數據的表現, Controller控制model和view之間的交互。Jbuilder8提供了工具和向導來使你快速的建立一個基 于Struts的應用。
3.提高軟件開發的效率
(1)消息框
你可以使消息框在屏幕的任何位置變成一個自由移動的窗口。
(2)狀態欄消息
你可以使用Tools|IDE Options|Browser|Status Message Timeout選項設置狀態欄信息保持的時 間。
(3)編輯器
大多數效率的改進是針對編輯器的,改進后的編輯器更加提高了軟件開發的效率。
4.團隊開發的改進
(1)Merge Conflicts
在History面板里有一個Merge Conflicts頁,你可以在這里察看或者解決在工作臺和版本控 制庫里相應的文件的不一致情況。
(2)CVS的改進
CVS方面有兩個關鍵的改進:
•如果你在JBuilder8里用pserver方式連接的時候,你可以指定端口號。
•你能在Project中CVS向導里搜索庫里的一系列的模塊和分支。
(3)Clear case 的改進
Clear case在版本控制設置管理方面也有很多改進,Status Browser主要是一個瀏覽工具:可 以瀏覽激活的工程,顯示每個文件的版本控制狀態,顯示可用的版本和不同版本之間的差別。
圖5-1 JBuilder 8的開發環境
5.1.2.2Web 服務器一Tomcat
Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心 項目,由Apache> Suri和其它一些公司及個人共同開發而成。由于有了 Sun的參與和支持,最新 的Servlet和Jsp規范總能在Tomcat中得到體現。Tomcat被Java World雜志的編輯選為2001年度 最具創新的java產品,可見其在業界的地位。
與傳統的桌面應用程序不同,Tomcat中的應用程序是一個WAR (Web Archive)文件。WAR 是Sun提出的一種Web應用程序格式,與JAR類似,也是許多文件的一個壓縮包。這個包中的
文件按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄, 另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml文件 和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet 類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到 WEB-INF下的lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不方 便。
在Tomcat中,應用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下, Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次 會很慢,因為Tomcat要將Jsp轉化為Servlet文件,然后編譯。編譯以后,訪問將會很快。另外 Tomcat也提供了一個應用:manager,訪問這個應用需要用戶名和密碼,用戶名和密碼存儲在一 個xml文件中。通過這個應用,輔助于Ftp,你可以在遠程通過Web部署和撤銷應用。當然本地 也可以。另外,Tomcat提供Realm支持。Realm類似于Unix里面的group□在Unix中,一個group 對應著系統的一定資源,某個group不能訪問不屬于它的資源。Tomcat用Realm來對不同的應用 (類似系統資源)賦給不同的用戶(類似group)。沒有權限的用戶則不能訪問這個應用。
3 Apache Toacat/5.0 - Microsoft Internet Explorer
文件0)編輯② 查看住)收藏@) 工具(V 幫助QJ) 聲
/搜素 收京夾審媒體0; " ”畫■
地址 © 闔 bttp://l0.0.0 100 :8080 —3串瞬;
pache Jakarta Project
http:// jakarta.apache.org/
If you're seeing this page via a web browser, it means you've setup
Tomcat successfully. Congratulations!
As you may have guessed by now. this is the default Tomcat home page. It can be found on the local filesystem at
$ CAT ALIN A_HOME /we bapps / ROOT/index, jsp
where "SCATALINA_HOMEH is the root of the Tomcat installation directory. If you're seeing this page, and you don't think you should be. then either you're either a user who has arrived at new installation of Tomcat, or you're an administrator who hasn't got his/her setup quite right. Providing the latter is the case, please refer to the Tomcat Documentation for more detailed setup and admi ni strati o n in formation than is foun d in the INSTALL file
Internet
圖5-2 Tomcat 5.0管理首頁
5.2數據庫連接池的設計與實現
5.2.1總體實現
本系統的連接池由兩個類構成,它們是類DBConnectionManager和類DBConnectionPool« DBConnectionPool類主要負責完成對數據源的包裝和初始化,還有就是當有首個連接請求時 完成池的連接。在類的結構設計上,本類是作為類DBConnectionManager的一個內隱類出現的。 這樣設計的目的是便于類DBConnectionManager對其內隱類DBConnectionPool的管理。
DBConnectionManager類主要負責完成對連接池的管理,當有連接請求到達時,它會根據連 接池的連接情況做出相應的處理,如果有空閑連接資源,就分配給這個請求的進程,如果沒有空 閑連接資源,則讓其處于等待狀態。
5.2. 2具體過程實現
1、初始化連接池
圖5-4連接池初始化的UML圖
如圖54所示,在系統開始啟動或第一個用戶申請使用數據庫連接時,通過定義標簽傳入的 一些屬性信息對數據源進行初始化,并同時對連接池進行了初始化。以后,這個連接池的實例就 成為了一個系統變量,這以后訪問的所有用戶都使用這個連接池中的連接來訪問數據庫,這就是 建立連接池的全部過程。對于網頁編程人員來說,他們只需要知道幾個數據庫的屬性,比如數據 庫服務器的位置、數據庫驅動程序的名字、數據庫定義的用戶名和密碼等,就可以連接并進行數 據庫操作了,而完全不用知道連接池的實現細目。
2、從連接池中獲得連接
圖5-5獲得連接的UML圖
如圖5?5所示,在程序調用了數據源的封裝類的getConnectionO方法后,實際上是調用了連 接池的ConnectionPool的getConnectionO方法,從連接池中獲得一個空閑的連接或者是一個新的 連接。最后把這個獲得的物理上的連接作為參數,進行包裝后返回給程序這個物理連接的封裝實 例。
對于使用者來說,只要知道對數據源調用獲得連接的方法就可以了,而不必知曉上面連接池 的具體工作過程。
3、把連接返回給連接池
圖5-6向連接池返回連接的UML圖
如圖5-6所示,在使用者用完數據庫連接資源后,就可以調用斷開連接的release方法來關閉 這個連接。而實際上,使用者并沒有關閉這個連接,它只是把這個連接返回給連接池,供其它使 用者來申請并使用這個數據庫連接。
5. 3系統主要功能模塊的實現
農業機械裝備網內容管理系統邏輯實現中的所有類文件利結構如圖5?7所示:
E 李 common
CodeFilter.java 令,Counter .java 令 DsrteUtil.java $ EnvironmentConfig .java
令 ISiteEnvironment .java
兮 Pagination java m a database
$ DBOperator.java 惡 SOLDBOpersttor .java :三享 ebusiness
令.RegisterUser java ■-令 Waitinginfo .java ;E 曲 news 國醐manage 魚享note :令 LinkNews java
NewsShow java
-Personal.java
SearchNews.java
…& UserManage.java
…UserNews.java s a persistence
EbusinessRegisterjava
令 NBA/S Admin .java 令 NEWSCIass.java ■令 NEWSKind java 令.NEWSPic.java …兮 NEWSTable .java • Releaseinfo java
E ® pool
■ DBConnectionManager.java
DBConnectionManagerDBConnectionPool.java 三拿 servlet
令 DOServlet.java
、d SessionManager .java
圖5-7類結構圖
農業機械裝備網內容管理系統表示實現中的文件及其結構如圖5-8所示:
admin
login.jsp
'「I、admin login.jsp
■Q-h main.jsp
•Q二 index.jsp
css
? 亠
: 4
4 error.jsp
Qzh personalerr.jsp listarticle.jsp purview.jsp
admin
卜- 壬二/ usr
卜" news
; column
■ E-business
圖5-8表文件結構圖
5.3.1身份驗證模塊的實現
1、表示實現
此模塊是內容管理系統的入口,其功能就是實現身份信息的邏輯驗證。用于實現表示的文件
如表5-1所示:
表5-1身份驗證模塊表示實現的文件
序號 名稱 功能
1 admin_Iogin.jsp 實現Web顯示,提供系統入口
2 login.jsp 實現身份驗證,對用戶名和密碼進行驗證
3 default.jsp 系統管理平臺首頁
其Web表示的實現如圖5-9所示:
如果用戶輸入正確的用戶名和密碼,則可以進入內容管理系統進行管理;如果用戶名和密碼 不正確,則系統會提示驗證出錯,重新登陸。
2、業務邏輯實現
實現邏輯驗證的類和方法如表5-2所示:
表5-2身份驗證模塊邏輯實現的文件
序號 類名稱 方法名稱 功能
1 NEWSAdmin getUserName() 取得用戶名信息
2 NEWSAdmin getPassword() 取得密碼信息
3 ISLogin isUsemameOk() 判斷用戶名正確與否
4 IS Login isPasswordOk() 判斷密碼正確與否
5 ISLogin upTimeAndIp() 更新最后登陸時間和IP
6 SessionManager responseUrl() 實現文件調用
3、調用關系
圖5-10登陸模塊文件調用關系
如圖5-10所示,其驗證流程順序如下:
•管理用戶登陸,輸入用戶名和密碼
•調用邏輯驗證ISLogin類
•ISLogin類調用NEWSAdmin類取得用戶名和密碼數據信息
•ISLogin類與連接數據庫的類通信,進行信息驗證
•驗證結果信息傳回login, jsp文件
•如果是管理用戶,則調用default, jsp進入管理系統,否則報錯,返回登陸頁面
5. 3.2類別管理模塊的實現
53.2.1欄目管理的實現
1、表示的實現
用于表示的文件如表5-3:
表5-3類別管理模塊表示實現的文件
序號 名稱 功能
1 column.jsp 實現添加新欄目的Web顯示
2 editcolumn.jsp 編輯、修改欄目信息
3 delcolumn.jsp 刪除不需要的欄目信息
4 check.jsp session信息管理
創建新欄目和ID的功能實現如圖5-11
圖5-11創建新欄目名稱和ID
在圖5-11中填入欄目的ID號和欄目名稱,點擊提交即可完成新欄目的創建。其中ID號是 阿拉伯數字,如1、4、88等,欄目名稱可以取系統需要的欄目,本系統新聞中用到的欄目名稱, 比如欄目名稱有國內新聞、農機新聞等。
圖5-12編輯修改和刪除功能
如圖5-12所示,點擊編輯和刪除的圖標即可進行相應欄目的編輯修改和刪除操作。
2、邏輯的實現
用于實現邏輯的類和Beans的名稱和功能如表5-4:
表54類別管理模塊邏輯實現文件
序號 類或Beans 方法名稱 功能
1 NEWSClass getClassId()、getContent()x
setClassId()x setContent() 設置和取得欄目ID和名稱
2 Column InsColumn()、del Column ()等共 8 個方
法 此類用于添加、修改和刪除
欄目信息
3、調用關系
圖5-13欄目管理文件關系圖
5.3.2.2類別管理的實現
1、表示的實現
用于表示的文件如表5-5所示:
表5-5二級分類表示實現的文件
序號 名稱 功能
1 kind.jsp 實現添加新類別的Web顯示
2 editkind.jsp 編輯、修改類別信息
3 del kind.jsp 刪除不需要的類別信息
4 check.jsp session信息管理
創建新類別的功能如圖5-14所示:
圖5-14類別創建
如圖5-14所示,在創建新類別時,首先要選擇新類別的所屬欄目,然后才能輸入新類別的名 稱,在添加類別后面的文本框中輸入要創建的類別后,點擊“添加”按鈕即可完成新類別的創建。
圖5-15是已經創建的所有類別信息,如果想修改類別名稱,可以點擊圖上的編輯圖標,進行 相應類別名稱的修改,如圖5-16所示:
圖5-16類別的修改
在編輯修改時,可以重新選擇欄目,然后輸入該后的類別名稱,點擊“更新”按鈕即可完成 類別的修改。
2、邏輯的實現
用于實現邏輯的類和Beans的名稱和功能如表5-6所示:
表5-6二級分類邏輯實現的文件
序號 類或Beans 方法名稱 功能
1 NEWSKind getClassId()> getContent()^ setClass!d()> setContentQ^ getK.indId()> setK.indId() 設置和取得欄目和類別的
ID、名稱
2 Kind getKind()、delKind()等共 7 個方法 此類用于添加、修改和刪除
類別信息
3、調用關系
5. 3.3用戶管理模塊的實現
1、表示的實現
用戶管理模塊有兩個主要功能,一個是個人信息的管理,一個是系統用戶(管理員)的管理, 用于表示實現的文件如表5-7所示:
表5-7用戶管理模塊表示實現的文件
序號 名稱 功能 1
1 editadmin.jsp 個人信息管理,主要是密碼維護
2 man ager.jsp 管理員信息管理,主要是添加和刪除
3 deladmin.jsp 刪除管理員信息
個人信息管理的功能實現如圖5-18所示:
用戶名: adiTiin
原始密碼:
新密碼:
重復-遍:dBHHM
用戶等級: 系統管理員
1更新資料|
圖5-18個人信息管理
如圖所示,主要是針對密碼的修改。基于安全的考慮,在修改的時候要輸入原來的密碼,然 后輸入兩遍新密碼,點擊“更新資料”按鈕即可。
管理員信息管理功能實現如圖5-19所示:
如果想修改某一管理員,則先刪除要修改的管理員,再重新添加即可。
2、邏輯實現
用于實現邏輯的類和Beans的名稱和功能如表5-8所示:
表5-8用戶管理模塊邏輯實現的文件
序號 類或Beans 方法名稱 功能
1 NEWSAdmin getAdminName() 取得管理員用戶名
2 NEWSAdmin getAdminPassword() 取得管理員密碼
3 NEWSAdmin setAdminName() 設置管理員用戶名
4 NEWSAdmin setAdminPassword() 設置管理員密碼
5 Usr listUser()等共14個方法 此類用于添加、修改和刪除用戶信息
3、調用關系
表示層 邏輯層 數據層
圖5-20用戶管理模塊文件調用關系圖
5. 3.4新聞管理模塊的實現
新聞管理模塊是系統的一個重要模塊,也是邏輯實現復雜的一個模塊。
1、表示實現
此模塊表示實現的JSP文件名和功能列表如下:
表5-9新聞管理模塊表示實現的文件
序號 名稱 功能
news.jsp 添加新聞屬性信息頁面
2 newsCheck.jsp 添加新聞檢查頁面,起到驗證的功能
3 insert.jsp 把新聞信息存入數據庫
4 newslist.jsp 列出所有新聞信息
5 search.jsp 實現新聞查找功能
6 editNews.jsp 對已經存在的新聞提供編輯修改功能
7 editN ewsCheck.j sp 實現對編輯修改后的文章進行檢査
8 updateNews.jsp 完成編輯修改后的文章的更新
9 delNews.jsp 刪除一條新聞內容
10 check.jsp Session信息管理
添加新聞屬性信息的頁面如圖5-21所示:
圖5-21添加新聞
如圖,帶*號為必填項,包括文章類型、文章標題、內容、作者、編輯、出處;其它項不做 要求,支持最多2張圖片上傳的功能,并對圖片在新聞中的顯示方式做了三種選擇;相關文章選 項可以輸入相關文章的題目。
填入新聞內容完畢后,點擊“提交”按鈕,調用檢查頁面進行內容核查,如果無誤,進行插 入數據庫,添加完畢。
圖5-22新聞列表
圖5-22是部分新聞信息的一個列表,點擊某一文章題目可以查看其在前臺頁面顯示的效果; 點擊刪除下面的圖標可以對具體某一篇文章進行刪除操作;點擊編輯下面的圖標可以進入文章的 編輯修改頁面,進行修改,這里以第一篇新聞為例進行編輯修改,其修改頁面如圖5?23所示:
欄目:國內新聞 y 類茅j:國內新聞 育i戢暮產銷御疝漁題節務苕棄’'
為了充分展示“中國馬鈴蓉之鄉”風貌,進一步開拓廣闊的國際國內市場,使定西馬鈴薯 '進一步走向全國、走向世界,由定西市政府主辦、定西市安定區政府承辦的“中國?定西首 屆馬鈴薯產銷街接洽談會”將干2004年9月130714日在定西市隆重召開。
Y 位于甘肅省中部的定西市是中國馬鈴薯三大主產區之一,享有“中國馬恰薯之鄉” Z
「稱。近年來,定西市委、市政府順應天時、順應市場,積極發揮比較優勢,大力發展馬鈴 薯產業,逐步形成了種植、加工、銷售.科研一體化的發展格局,定西已經成為全國重宴 的馬糕薯生產、加工、銷售基地。2004年全市馬鈴薯種植面積達到350萬畝,總產量達500 「多萬噸,并形成了新大坪系列、渭薯系列、隴薯系列、專用蓉系列等30多個品種和精淀 粉、粉皮、蓉格、蓉丸、薯條、萼泥等十多種產品,產品遠銷華北、華中、華東、華南籌 *國內市場及新加坡、日本、菲律賓,香港等國家和地區。
辭福_„ z蛙浮 $::《世界商業評論》ICXO. COM >診 網1iMmmwmmmmrniwimuwiWM———————M—W—MMBWi
圖5-23新聞的編輯修改
如圖5-23,可以對新聞的任何屬性信息進行修改,包括圖片的修改,修改完畢點擊“更新” 按鈕即可。
在對圖片進行修改時,如原來有圖片,則要選中“刪除”后,在添加新圖片。
2、邏輯實現
用于實現邏輯的類和Beans的名稱和功能如表5-10所示:
表5“0新聞管理模塊邏輯實現的文件
序號 類或Beans 功能
1 SessionManager Session信息管理
2 DOServlet 文件調度和轉發
3 NEWSTable 存取新聞信息
4 upBean 上傳圖片文件
5 News 新聞信息的維護和管理
6 Paginatio n 分頁功能實現
7 Kind 分類信息維護
8 Column 欄目信息維護
9 NewsShow 新聞信息的顯示
3、調用關系
newslist.jsp
5. 3. 5商務信息模塊的實現
商務信息模塊主要功能是對前臺用戶發布的商務信息進行審批管理,以及對前臺注冊用戶的 管理。
1、表示實現:
用于表示實現的JSP文件如表5-11所示:
表5-11商務信息模塊表示實現的文件
序號 名稱 功能
1 waitCheckjsp 顯示待審信息,進行管理
2 lookup In fo.jsp 查看待審信息的詳細內容
3 admire.jsp 審核批準待審信息,可以在前臺顯示
4 delWaitjsp 刪除待審信息
5 register.jsp 顯示前臺注冊用戶,進行管理
6 lookup Register.jsp 查看注冊用戶詳細信息
7 del Register.jsp 刪除注冊用戶信息
其中,管理待審信息的功能實現如圖5-25:
信息題目(加入時間) 審批
岀售炸油機 批準
圖5-25待審信息管理
如圖5-25,是一條“購買聯合收割機”的待審信息,點擊信息題目名稱進行信息詳情的查看, 如果信息合理正確,則可以點擊“審批”字樣批準;如果信息是錯誤的,則可以點擊“刪除”字 樣把這條信息刪除。
出售炸油瓠
信念發布時何:2005-06-04
聯系人:溢曉
電話:
內容:本公司有閑置炸油機一臺,性能良好,預出售,請有意者電話聯系
公司名稱:慈京李良農產品力0X脣陶公同
地址:北京幣審臺區
郵編:1G0043
傳真:
阿址:無
Email : 11 li an或s:扣丄.c
信息類型:出鑄信厲
關閉窗口
版權所有:中國農業機械裝備網
圖5-26待審商務信息詳細內容
2、邏輯實現
用于實現邏輯的類和Beans的名稱和功能如表5-12所示:
表5?12商務信息邏輯實現的文件
序號 類或Beans 功能
1 Pagination 實現分頁功能
2 Waitinglnfo 取出所有待審信息和具體內容信息
3 RegisterUser 對注冊用戶信息進行管理
3、調用關系
5. 4關鍵技術
5.4.1數據庫優化技術
對于農業機械裝備網內容管理系統這種需要頻繁的訪問數據庫的系統而言,頻繁的創建、關 閉連接會極大的降低系統的性能,成為系統的瓶頸。
為了有效地解決這個問題,我們引入了連接池的概念。連接池是數據訪問中的重要技術,在 某些情況下對訪問數據庫的性能有巨大的提高。它的核心思想是連接復用,通過建立一個數據庫 連接池以及一套連接使用、分配、管理策略,使得一個數據庫連接可以得到高效、安全的復用, 避免了數據庫連接頻繁建立、關閉的開銷。連接池對JDBC中的原始連接進行了封裝,從而方 便了數據庫應用對于連接的使用,提高了開發效率,也正是因為這個封裝層的存在,隔離了應用 的本身的處理邏輯和具體數據庫訪問邏輯,使應用本身的復用成為可能。
本系統中實現的數據庫連接池大大減輕了數據庫服務器的負擔,保證了系統的穩定、快速的 響應。
5. 4. 2組件技術
組件技術是指用可重用的組件來構造應用程序。軟件的組件化不需要代碼的重新編譯和連 接,而是直接將組件作為功能模塊在二進制代碼級用于軟件指紋的裝配。近幾年來,組件在基于 WEB應用開發中得到了廣泛應用,應用組件技術可以明顯提高系統的開發質量,極大的增強軟 件的重用能力,同時也使得程序的后期維護變得極其方便。
JavaBean是基于Java的組件標準,具有可重用、與平臺無關、可移植、兼容性、可擴展、 創建和使用方便的特點。JavaBean組件可以在任何環境和平臺上使用,滿足各種交互式平臺的需 求,也可以在其它程序、組件、WEB應用中重用。
在內容管理系統中,通過JavaBean與JSP的結合,極大的擴展了程序的功能:將應用邏輯 封裝到JavaBean中,使得用戶界面與應用邏輯完全分離,能夠更加方便的擴展應用邏輯,更加 靈活的使用數據庫;JavaBean組件的重用提高了開發的效率和質量,同時使維護也更加方便。
5.4.3安全技術
1、 網絡安全
防火墻是企業網站安全的第一道防線,可以制定防火墻策略,封閉不必要的服務端口,進行 用戶認證等。采用IP地址翻譯NAT(Network Address Translation),屏蔽網站內部服務器的地址, 可有效防止黑客攻擊。
2、 系統安全
對操作系統與數據庫及時升級,安裝最新的補丁,有利于填補安全漏洞。關閉系統中不必要 的服務與端口,例如所有的R命令、Finger、talk、Ftp、Telnet等。對于維護網站所必須的Ftp 與Telnet功能,安裝SSH,以代替Ftp與Telnet。
3、 用戶安全
制定嚴格的賬戶管理規范,減少不必要的賬戶,對系統中既有用戶嚴格依照密碼規則管理。 4^系統備份
添加必要的備份設備與備份軟件,制定備份策略,由系統定時將關鍵數據進行備份,一旦系 統被黑客攻破,數據被破壞,可以在最短的時間內將系統恢復,減少損失。
第六章總結與展望
6.1總結
本文的設計思想是從實用和研究角度出發,分析了當前網站內容管理的現狀,針對大多數系 統使用不方便、可移植性差、平臺不獨立、不安全因素,并結合農業機械裝備網的項目需求,提 出了使用J2EE技術來實現一個基于B/S模式的內容管理系統,給出了農業機械裝備網內容管 理系統的設計方案,包括需求分析、功能分析、系統結構圖、網絡拓撲結構圖、系統詳細設計等, 建立了系統的開發平臺,包括數據庫的選擇、開發語言和工具的選擇、服務器的運行環境等,最 后對系統各個模塊的實現過程做了詳細的說明,并對實現中使用的關鍵技術進行了總結。
6. 2進一步研究
內容管理系統是一個非常具有實用價值和發展前景的系統,國外的內容管理系統已經有成熟 的產品和技術,國內的產品只是剛剛起步,還有更多的東西需要去研究。從技術和應用角度來看 內容管理的未來發展,會有以下幾個趨勢:
•一是應用范圍的繼續拓展,主要表現為兩種方向的“E”-CM:第一個“E”是Enterprise, 另一個“E”是E-business; 一方面從辦公自動化以及某些局部應用拓展到整個企業, 另一方面電子商務交易中對整個內容價值鏈的管理。
•二是和業務應用更加緊密結合,應用集成將成為內容管理解決方案所必須要考慮的問 題,因為內容管理最終還是要服務于具體的業務過程。
•三是技術應用的進一步深化,目前的內容管理解決方案具備了檢索、工作流、版本控制 等基本功能,處理的智能性尚還不高;文檔自動分類技術、文本挖掘、Web挖掘、portal 等技術也有了一定的應用,以后還會發展出更智能化的內容處理技術,如語義分析、自 然語言理解、智能代理等。
•四是和知識管理趨向融合,并最終成為知識管理解決方案的組成部分,這主要歸因于內 容管理的很多功能和知識管理相比并不具備獨特性。而且在目前內容管理和知識管理各 自的應用中,也沒有顯示出太多的差異性,這其中一個原因是因為知識管理尚處于初步 階段,更多強調地恰恰是內容管理的功能。
本系統還需要有以下改進:
1、 整個系統力求真正做到不懂任何IT專業知識的人士,能夠完成所有的工作,目前還達 不到這種程度,必須先由一定的專業人士利用此系統搭建初步的網站,但在維護和發布上做到了 真正的簡單易用。
2、 提高系統的集成度,達到接口靈活、標準化程度高,方便不同廠家的產品集成,該類產 品一般包括:用戶管理系統、資源管理、郵件系統、信息分類搜索管理、訪問流量統計、個性化 管理等。在該系統中,雖然在部分功能都已經融入其中,但是要真正完全集成其它的系統,還要 不斷的提供接口。
3、 進一步提髙系統的緩存機制,由于一個動態頁面的速度往往會比靜態頁面慢2-10倍, 因此訪問速度很快成為一個瓶頸。除了優化內容發布系統的應用本身外,如果能把更新頻率比較 低的動態頁面轉存成靜態網頁來發布,速度上的提升效果將是顯著的,而靜態網頁如果能被緩存 在內存里,訪問速度更會比原有動態網頁有2-3個數量級的提高。
4、 XML語言有著良好的數據存儲格式、可擴展性、高度結構化、便于網絡傳輸的優點, XML能夠使不同來源的結構化的數據很容易的結合在一起,而且XML把數據和顯示分開,能 夠在結構數據中嵌套程序化的描述以表明如何顯示數據,如果要提高本系統的平臺無關性,勢必 要加強XML技術的應用。
農業機械裝備網內容管理系統雖然在一定程序上滿足了項目的建設要求和維護網站的需要, 但是由于開發的周期和技術的限制,還存在著種種問題,有待進一步的研究和開發。
參考文獻
[1]Allamaraju S> BuestC、Davies J,等著.J2EE編程指南(1.3版).馬樹奇 譯.北京:電子工
業岀版社,2002. '
[2](美)Bruce Eckel著.Java編程思想.侯捷譯.北京:機械工業出版社,2002.
[3]飛思科技產品研發中心編著.JSP應用開發詳解(第二版).北京:電子工業出版社,2004.
[4]趙強、喬新亮編著.J2EE應用開發.北京:電子工業出版社,2004.
[5]王宏 編著.SQL Server 2000數據庫管理.北京:人民郵電出版社,2000.
[6](美)ChanP、Lee R、Kramer D,等著.Java 2類庫.趙皚、黃志軍、陽亮,等譯.北京: 機械工業岀版社,2001.
[7]鄭人杰、殷人昆、陶永雷,等著.實用軟件工程(第二版).北京:清華大學出版社,1997.
[8](美)Roman Ed著.精通EJB (第二版).劉曉華 譯.北京:電子工業出版社,2002.
[9]龔儉、陸晟、王倩,等著.計算機網絡安全導論.南京:東南大學出版社,2000.
[10]劉超、張莉著.可視化面向對象建模技術.北京:北京航空航天大學出版社,1999.
[11](美)BuddT著.面向對象JAVA編程思想.三聯四方工作室譯.北京:清華大學出版社, 2002.
[12]王能斌著.數據庫系統原理.北京:電子工業岀版社,2000.
[13]薩師煩、王珊著.數據庫系統概論(第三版).北京:高等教育出版社,2000.
[14](美)SchildtH著.Java2參考大全.張玉清、吳溥峰、尚勇,等譯.北京:清華大學出版 社,2002.
[15]Andrews. Tanenbaum著.計算機網絡(第3版).熊桂喜、王小虎譯.北京:清華大學出 版社,1998.
[16]林勝利、王坤茹、孟海利.JAVA優化編程.北京:電子工業岀版社,2005.
[17]耿祥義、張躍平.JAVA2實用教程(第二版)實驗指導與習題解答.北京:清華大學出版社, 2005.
[18]孫印杰、劉斌、孫玉強.JAVA編程案例精解.北京:電子工業出版社,2005.
[19]王夢麗、張利平、杜慰純著•信息檢索與網絡應用.北京:北京航空航天大學出版社,2001.
[20]張衛云.基于Web的內容管理系統研究與開發:[碩士學位論文]•北京:華北電力大學,2004.
[21]李國柱.基于內容管理的Web信息發布系統的設計與實現:[碩士學位論文].蘇州:蘇州大 學,2004.
[22]金國藩、龔炳錚、劉津西,等.計算機及其網絡的應用與發展(第四冊).北京:電子工業 出版社,1999.
[23]Douglas E. Comer、David L. Stevens著.用TCP/IP進行網際互聯(第三卷:客戶-服務器編 程與應用Linux/POSIX套接字版).趙剛、林瑤、蔣慧等譯.北京:電子工業出版社,2001.
[24]鄧正宏、薛靜、鄭玉山.面向對象技術.北京:國防工業出版社,2004.
[25]劉勇 周學軍.SQL SERVER 2000基礎教程.北京:清華大學岀版社,2005.
[26]胡百敬.MICROSOFT SQL SERVER性能調校.北京:電子工業出版社,2005.
[27](美)Xiaoping Jia著.JAVA面向對象程序設計教程(第2版).楊茂江譯.北京:清華大學 出版社,2004.
[28](德)Bemd Oestereich著.軟件開發方式:UML面向對象分析與設計(第二版).姜南、周志 榮 譯.北京:電子工業岀版社,2004.
[29]劉建生、廖列法、吳南萍著.JAVA與面向對象程序設計導論.北京:北京希望電子出版社, 2004.
[30]Barry Stinson. PostgreSQL Essential Reference. New Riders Publishing, 2002.
[31]Marco Pistoia、Duane F. Reller> Deepak Gupta» etal? Java 2 Network Security? California: International Business Machines Corporation, 1999 ?
[32]Pratik Patel ? Java Database Programming with JDBC ? Publisher: The Coriolis Group» 1996.
[33]Elliotte Rusty Harold. Java Network Programming (2nd Ed). Sebastopol: O'Reilly & Associates, Inc, 2000.
[34]Sinan Si Alhir. Learning UML. Sebastopol: O'Reilly & Associates, Inc» 2003 •
[35]Robert Englander. Java and SOAP? Sebastopol: OReilly & Associates, Inc, 2002.
[36]Indeijeet Singh、Beth Steams、Mark Johnson etc. Designing Enterprise Applications with the J2EETM Platform (Second Edition)? Sun Microsystems, Inc» 2002.
[37]Brell Mclaughlin. JAVA and XML. Sebastopol: O'Reilly & Associates, Inc. 2000.
[38]Gerald Carter. LDAP System Administration? Sebastopol: O'Reilly & Associates, Inc, 2003 •
[39]Craig Hunt. TCP/IP Network Administration, 3rd Edition. Sebastopol: O'Reilly & Associates, Inc» 2002.
[40]Avinash Chugh Jon Mountjoy. WebLogic: The Definitive Guide ? Sebastopol: O'Reilly & Associates, Inc, 2002 ?
[41]Larry Ullman? PHP for the World Wide Web: Visual QuickStart Guide. Peachpit Press. 2001.
[42]Ashok Appu. Administering and Securing the Apache Server? Cincinnati: Premier Press, a division of Course Technology» 2002 ?
[43]Amit Bakore、Debashish Bhattachaijee、Sandip Bhattacharya,et al • Professional Apache Tomcat. Indianapolis: Wiley Publishing, Inc» 2003?
[44]Mark Artiges > Gupreet Singh Bhasin Bernard Ciconte,et al ? BEA WebLogic Server 8.1 Unleashed, the United States of America: Sams Publishing. 2004?
[45]James Turner. MySQL and JSP Web Applications: Data-Driven Programming Using Tomcat and MySQL, the United States of America: Sams Publishing. 2003.
[46]Martina Brockmann、Katrin Kirchner、Sebastian Luhnsdorf^et al. Zope Web Application Construction Kit. the United States of America: Sams Publishing* 2001.
[47]Mark Wutka、Alan Moffett Kunal Mittal Sams. Teach Yourself JavaServer Pages 2.0 with Apache Tomcat in 24 Hours ? the United States of America: Sams Publishing, 2003.
[48]Ron Hitchens. JavaNIO. Publisher: O'Reilly, 2002.
[49]Todd M. Thomas? Java Data Access—JDBC, JNDI, and JAXP. M&T Books? New York, 2002.
[50]Shyam Kumar Doddavula? Clustering with Tomcat. O'Reilly Network* 2002.
[51 ] Hans Bergsten ? JavaServer Page (2nd Edition)? Publisher: OKeilly, 2002.
[52]Jonathan Knudsen^ Pat Niemeyer? Learning Java (2nd Edition). Publisher: OrReilly, 2002.
[53]Joe ZufFoletto> Gary Wells、Brian Gill,et al? BEA WebLogic Server Bible. New York: Hungry Minds, Inc» 2002.