java語言是一種可移植的,簡單的,健壯的嵌入式語言。并且對網絡,數據庫有很好的支持,基于JAVA語言的這種特性可以十分輕易地建立一個小型INTERNET服務器。
本項目中,作者用JAVA語言編寫了一個WEB微型服務器,對簡單的HTTP請求進行響應,并通過后端數據庫對用戶的查詢進行處理,從而動態地返回Html頁面。
二.項目實現:
(一)項目具體功能分析與開發工具選擇
可以利用一臺較高配置的個人臺式機就可以實現社區內的小型服務器,包括網頁瀏覽,基于高速局域網的視頻下載和播放,定時新聞組發布程序,郵件服務器等服務。
本軟件實際上是一個HTTP協議的服務器。HTTP(Hyper Text Transfer PRotocol),是一個專門為Web服務器和Web瀏覽器之間交換數據而設計的網絡協議。它通過規定通用資源定位符(URLs)使客戶端的瀏覽器與服務器的Web資源建立鏈接關系,從而奠定了用戶對Internet透明訪問的基礎。
在本軟件中通過傳輸HTML文件使客戶端可以實現網頁瀏覽。HTML是WWW的通用標記語言,它用來創建Web頁面和控制Web信息顯示格式。HTML不是編程語言,而是一種描述語言。HTML2.0得到了IETF(Internet Engineering Task Force)的支持而成為Internet國際標準。目前,HTML已經發展到3.0和4.0版,只是新版本的標準尚未完全統一,不同的商家對HTML2.0進行了一定的擴充,引入了更多新的功能。例如,Netscape公司在HTML3.0中增加了頁面底圖(Background Images)和表(Table)定義等標記,使得Web頁面更加引人入勝。
CGI是通用網關接口(Common Gateway Interface)的簡稱,它是Web服務器與外部程序之間的通信接口,服務器并不關心外部應用程序是什么語言(如C、C++、Pascal、Delphi或Perl)編寫的,它只是負責接收用戶輸入的信息,并把CGI程序所產生的結果--HTML文檔或其他符合HTTP規定的文件回傳給用戶。事實上,CGI是動態Web頁面制作的第一步,但由于CGI程序實現比較困難,而且效率不高,它已經逐漸被新的技術所取代。
網頁瀏覽支持的網頁包括HTML,javascript,APPLET,VBSCRIPT等編寫的網頁,但不支持php,asp等服務器端動態程序的網頁。由于服務器的規模較小,所以服務器端動態程序被集成進服務器中。但可以通過編寫符合一定規則的JAVA的CGI程序實現服務器端的動態性,不過這種JAVA程序的安全性很難保證。
2. 與數據庫連接
在與數據庫的連接中我們選用的后端數據庫是微軟的access數據庫,由于本項目是面向小型社區的社區數據中心服務器,所以選用小型的數據庫。由于JAVA的可移植性可以將服務器用在linux平臺上,這時可以用本服務器提供的數據庫配置程序連接到MySQL等基于LINUX的小型數據庫。
我們應用JDBC完成與數據庫的連接。Java的一項出色能力是構建與平臺無關的客戶機/服務器數據庫應用。在Java 1.1中,通過Java數據庫連接(JDBC)實現了與各家公司之間的數據庫的互連。數據庫最主要的一個問題就是各家公司之間的規格大戰。確實存在一種"標準"數據庫語言,即"結構查詢語言"(SQL-92),但各公司為了表示自己的與眾不同對標準都有一些微小的改動。所以通常必須確切知道自己要和哪家數據庫公司打交道,否則極易出問題,盡管存在所謂的"標準"。JDBC是面向"與平臺無關"設計的,所以在編程的時候不必關心自己要使用的是什么數據庫產品。和Java中的許多API一樣,JDBC也做到了盡量的簡化。我們發出的方法調用對應于從數據庫收集數據時想當然的做法:同數據庫連接,創建一個語句并執行查詢,然后處理結果集,無論與我們打交道的是哪家數據庫廠商的產品。
JDBC的使用:
為實現這一"與平臺無關"的特點,JDBC為我們提供了一個"驅動程序治理器",它能動態維護數據庫查詢所需的所有驅動程序對象。所以假如要連接由數家公司開發的不同種類的數據庫,就需要每個數據庫的單獨的驅動程序對象。驅動程序對象會在裝載時由"驅動程序治理器"自動注冊,并可用Class.forName()強行裝載。
為打開一個數據庫,必須創建一個"數據庫URL",它要指定下述三方面的內容:
(1) 用"jdbc"指出要使用JDBC。
(2) "子協議":驅動程序的名字或者一種數據庫連接機制的名稱。由于JDBC的設計從ODBC吸收了許多靈感,所以可以選用的第一種子協議就是"jdbc-odbc橋",它用"odbc"要害字即可指定。
(3) 數據庫標識符:隨使用的數據庫驅動程序的不同而變化,但一般都提供了一個比較符合邏輯的名稱,由數據庫治理軟件映射(對應)到保存了數據表的一個物理目錄。為使自己的數據庫標識符具有任何含義,必須用自己的數據庫治理軟件為自己喜歡的名字注冊(注冊的具體過程又隨運行平臺的不同而變化)。
所有這些信息都統一編譯到一個字串里,即"數據庫URL"。本例中,我們想通過ODBC子協議同一個標識為"vod"的數據庫連接,相應的數據庫URL設為:
String dbUrl = "jdbc:odbc:vod"
同樣假如通過一個網絡連接,數據庫URL也需要包含對遠程機器進行標識的信息。
新聞熱點
疑難解答