摘要:在互聯網高速發展的今天,JSP技術也得到了飛速的發展,它在運行速度、安全性、可移植性均比傳統的Web編程語言有很大的改進。因此了解并掌握在JSP開發中使用數據庫的方法和技巧日益重要。
關鍵詞:JSP;數據庫;網站
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)27-1889-03
The Application of JSP Technology in Database
LIU Jun
(Henan Mechanical and Electrical Engineering College, Xinxiang 453000, China)
Abstract: Nowadays when the internet develops very quickly,The JSP technology is also at full speed development. JSP technologyhas improved inrun speed , security , ransportability comparing with traditional Web programming language.therefore, it is important that grasping the method of JSP Technology applicattingin Database.
Key words: JSP; database; Website
1 引言
J2EE技術無疑成為當今電子商務的最佳解決方案,在最近兩年,JSP技術又有了巨大的發展和變化。在J2EE1.4框架中,對JSP和Servlet技術進行了升級。在新的JSP2.0規范中,為JSP的易用性進行了重新的設計,而JSP技術繼續繼承了Java技術的優勢,如簡單易用、完全面向對象、具有平臺無關性且安全可靠、主要面向Internet的所有特點。
2 JSP技術原理
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP技術的基礎,而且大型的Web應用程序的開發需要Java Servlet和JSP配合才能完成。JSP動態網頁生成的技術原理是:用戶向表單中輸入數據,確定后瀏覽器把客戶端的數據發送到Web服務器,服務器編譯解析JSP并生成動態網頁返回到客戶端的瀏覽器中(圖1)。

3 JSP平臺搭建
現在中小企業及個人較為流行的jsp平臺配置是windows xp professional+JDK+TOMCAT.Tomcat6.0,是當今使用廣泛的Servlet/JSP服務器,它運行穩定,性能可靠,可以直接從網絡中下載。Java開發工具和運行環境為JDK1.6。數據庫使用的是微軟的MySQL。UltraEdit進行代碼編寫,Dreamveaver MX進行頁面設計。
首先要安裝JDK,它是整個框架的基礎,然后安裝Tomcat6.0過程中需要指定JDK的安裝地址。JDK安裝成功后需要設定JAVA_HOME、CLASSPATH和PATH三個環境變量,具體的是,JAVA_HOME是軟件安裝的地址,CLASSPATH為.;JAVA_HOME:\\lib\ools.jar; JAVA_HOME:\\lib\\dt.jar,PATH設為Java bin的位置即可。數據庫MySQL和Tomcat,能直接從網絡中獲取,同其它大型數據庫軟件如Oracle、SqlServer2000等不同的是,整個數據庫運行環境都是在字符操作界面下完成的,而不是現在流行的Windows窗體,但它的優勢也是顯而易見的,對平臺要求低、免費、高效,完全滿足一般需求。由于要通過JDBC將數據庫和前端頁面銜接起來,我們還需要MySQL的JDBC驅動程序mm.mysql-2.0.4-bin或者是mysql-connector-java-3.0.11-stable-bin,兩者均可。這樣整個平臺就搭建成功了。整個平臺的成本非常低,最為重要的幾個軟件都是免費獲取的。就系統配置和成本方面考慮,此平臺是較為理想的選擇。
4 數據庫設計
4.1 數據庫驅動程序
JDBC API為Java開發者使用數據庫提供了統一的編程接口,它由一組Java類和接口組成。JDBC API使得開發人員可以使用純Java的方式來連接數據庫并進行操作。在JDBC3.0版本里,由兩個包java.sql和javax.sql來提供這些功能。Java數據庫驅動一共有四種,它們之間的優勢與區別如表1。本網站使用的是部分Java、部分本機驅動程序。

4.2 JDBC接口的實現
通過JDBC操作數據庫大致過程如下:首先裝載驅動程序,然后通過DriverManager來獲得一個連接,接下來創建Statement以執行SQL操作。在執行完操作后,需要關閉數據庫的連接以釋放資源。在開發中,具體的代碼可以這樣來實現:
Class.forName(\"org.gjt.mm.mysql.Driver\").newInstance();
Connection con=java.sql.DriverManager.getConnection(\"jdbc:mysql://127.0.0.1/jspdev\",\"root\",\"\");
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery(\"select * from wetland;\");
其中,Class.forName裝載了特定廠商提供的數據庫驅動程序,并且顯式地加載驅動程序類。Connection對象代表與數據庫的連接,也就是在已經加載的Driver和數據庫之間建立連接。getConnection()方法中,url=\"jdbc:mysql://127.0.0.1/jspdev\",user=\"root\",password=\"\",127.0.0.1是本機地址,通過localhost也能訪問,jspdev是使用的數據庫的名稱,user是數據庫的用戶名,默認的是root,password是密碼,默認為空。Connection接口方法createStatement()用于創建一個Statement來執行SQL語句,其返回的結果集就保存到rst實例中,結果集一般就是一個表,其中有查詢返回的列標題及相應的值。通過JSP中的腳本元素、動作元素及內建對象的引用,JavaBean的實現就能將數據庫中的內容調用到客戶端頁面中顯示出來。
在數據庫調用之后,需要使用代碼關閉連接以釋放資源:
rst.close();
stmt.close();
con.close();
4.3 數據源和連接池
數據庫連接的建立及關閉對系統而言是耗費系統資源的操作,在多層結構的應用程序環境中,這種耗費資源的動作對系統的性能影響尤為明顯。在傳統的數據庫連接方式中,一個數據庫連接對象均對應一個物理數據庫連接,每次操作都打開一個物理連接,使用完都關閉連接,這樣造成系統的性能低下。
數據庫連接池的解決方案就是在應用程序啟動時建立足夠的數據庫連接,并將這些連接組成一個連接池,由應用程序動態地對池中的連接進行申請、使用和釋放。對于多于連接池中連接數的并發請求,應在請求隊列中排隊等待。并且應用程序可根據池中連接的使用率,動態增加或減少池中的連接數。連接池技術盡可能多地重用了消耗內存的資源,大大節省了內存,提高了服務器的服務效率,能夠支持更多的客戶服務。通過使用連接池,將大大提高程序運行效率,同時,我們可以通過其自身的管理機制來監視數據庫連接的數量、使用情況等。在本網站的開發中,實現連接池關鍵代碼如下:
Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup(\"java:comp/env\");
DataSource ds = (DataSource)envCtx.lookup(\"jdbc/jspdev\");
同時,我們還要在Tomcat中配置數據源,這樣,Tomcat就會把這個數據源綁定到JNDI名稱空間,可以通過(DataSource)envCtx.lookup(\"jdbc/jspdev\")來查找這個資料源。查找到資料源,就可以通過Connection conn = ds.getConnection();方法來獲得一個到數據庫的連接。當執行完數據庫操作時,我們可以執行con.close()方法,以讓連接池管理器回收這個連接,但并不用關閉到數據庫的物理連接。
5 JavaBean設計
JSP最強有力的一個方面就是能夠使用JavaBean組件體系。JavaBean往往封裝了程序的頁面邏輯,它是可重用的組件。通過使用JavaBean,可以減少在JSP中腳本代碼的使用,這樣使得JSP易于維護,也使得JSP網站的安全性大大提高。
JavaBean傳統的應用在于可視化領域,現在,JavaBean更多的應用在不可視化領域,它在服務器端應用方面表現出了越來越強的生命力。不可視化的JavaBean在JSP程序中常用來封裝事務邏輯、數據庫操作等,可以很好地實現業務邏輯和前臺程序的分離,使得系統具有更好的健壯性和靈活性。
本網站作為數據庫專業網站也使用了JavaBean來封裝邏輯和數據庫操作。在數據庫的訪問中,我們可以把查找資料并訪問連接的操作封裝起來,作為一個工具類使用,這就是JavaBean,它大大提高了組件的重用性,也使得數據庫操作更為簡單與容易:
package com.jspdev.util;
import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一個用于查找數據源的工具類。
public class DatabaseConn {
publicstaticsynchronized Connection getConnection() throws Exception
{try
{Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup(\"java:comp/env\");
DataSource ds = (DataSource)envCtx.lookup(\"jdbc/jspdev\"); ;
return ds.getConnection();}
catch(SQLException e)
{throw e;}
catch(NamingException e)
{throw e;}}}
這個是該工具類的源代碼DatabaseConn.java,用javac將它編譯后就能產生JavaBean工具類。
6 樹狀菜單
在網站的主頁面中,采用JSP和JavaScript相結合的方法來創建樹狀菜單。這樣做的好處是能夠適應樹狀菜單總是經常變化的需要,其內容可以動態的生成,而不是JavaScript創建的靜態菜單。其中又涉及到了一個記錄樹狀結構的表(表2)及表中樹狀結構的記錄(圖2)。

7 總結
JSP技術是當今IT行業發展最快的技術之一,這不僅是因為它基于強大的Java語言,更重要的是它得到了許多主要的Web服務器、應用服務器和開發工具商的巨大支持,在實踐中不斷升級與完善。“一次開發,多個平臺應用”更是JSP動人之處。但是JSP開發離不開JDBC數據庫編程,幾乎所有的JSP項目都使用到數據庫,所以在開發基于JSP技術的動態網站中掌握JDBC數據庫編程技術非常重要。