【淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問5700字(論文)】_第1頁
【淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問5700字(論文)】_第2頁
【淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問5700字(論文)】_第3頁
【淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問5700字(論文)】_第4頁
【淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問5700字(論文)】_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

淺析利用Java技術實現(xiàn)基于Web的多數據庫訪問TOC\o"1-3"\h\u21417引言 引言隨著網絡技術和數據庫技術的不斷發(fā)展,各個領域中廣泛使用Web技術設計的數據庫應用。但在技術和歷史等眾多因素的影響下,一個大部門中并存多個應用且不集中,使信息資源的共享出現(xiàn)了很大的問題。在不影響原有系統(tǒng)運行的前提下,完成多個數據庫系統(tǒng)間的數據交互,訪問和處理。利用Java技術可以實現(xiàn)不同操作系統(tǒng)和不同數據庫管理系統(tǒng)間的數據處理,多數據庫系統(tǒng)的數據交互。java技術是應用最廣泛的編程語言和平臺。它具有平臺無關性、面向對象、安全性、高性能、分布式、多線程等特點。使用javabean實現(xiàn)多數據庫訪問技術。1.JSP技術JSP技術是java類的部分技術。JSP頁面編譯成servlet可以調用JavaBeans組件(豆)或EJB組件(EJB)處理在服務器端。因此,JSP技術在構建可伸縮的基于Web的應用程序中起著重要的作用。JSP頁面不限于任何特定的平臺或Web服務器。JSP規(guī)范在行業(yè)中具有廣泛的適應性。采用jsp+javaBean的開發(fā)模式。頁面的的動態(tài)顯示內容將由jsp來處理,邏輯處理將由javaBean來完成。例如:對數據庫的連接,對數據庫中數據的增加,刪除等都以函數的形式封裝在javaBean中,需要使用時引用其中的函數就可以了。另外javaBean還有一個很重要的作用,就是頁面間傳遞參數的時候,起到一個中間載體的作用,當一個頁面要向另一個頁面?zhèn)鬟f數據,就可以把這么數據暫時保存在javaBean中,但是這些javaBean必須符合javaBean的規(guī)范。不僅如此,javaBean還可以指定有效期,如request,session,application等。通過采用jsp+javaBean的模式,實現(xiàn)了顯示與控制的分離,有利于軟件的開發(fā)工作,使開發(fā)過程中層次分明,避免顯示控制的代碼和邏輯控制的代碼混合在一起,使代碼容易閱讀。2.JDBC數據庫連接技術2.1JDBC概述JDBC是一種可用于執(zhí)行SQL語句的javaAPI(ApplicationProgrammingInterface應用程序設計接口)。它由類和頁面是用java語言寫的。JDBC提供了數據庫應用程序開發(fā)人員和數據庫前端開發(fā)工具標準的應用程序設計接口,使開發(fā)人員能夠編寫完整的數據庫應用程序在普通java語言。2.2JDBC的特點用java語言的特點的JDBC驅動程序的應用(良好的跨平臺),獨立的數據庫管理系統(tǒng),作為數據庫管理系統(tǒng),無論是使用Oracle或SQLServer2000或Sybase或MySQL或java代碼沒有任何變化,只要對相應數據庫的JDBC驅動程序管理系統(tǒng)可更換。JDBC的特性如圖所示:數據庫數據庫Java2EnterpriseEditionPlatformJDBC圖2-1JDBC的特點2.3JDBC的結構JDBC大致分為3部分,即JDBCAPI、JDBC驅動程序管理器和JDBC驅動程序,JDBC的結構如下所示:JDBCAPIJDBCAPI驅動管理者JDBC驅動ODBC驅動ODBC數據庫JDBC數據庫圖2-2JDBC的結構JDBCAPI由包java.sql提供,和java.sql包中提供的JDK(javaDevelopmentKi)作為基本配置,和JDBCAPI是獨立于數據庫的接口類。在JDBCAPI上,它只涉及數據庫提供的類的接口,這些接口由提供JDBC驅動程序的軟件供應商提供。一般來說,JDBC指的是JDBCAPI,它的結構層次如下圖:ResultSetResultSetStatementConnectionPrepareStatementCallableStatement數據類型字符串數值與java數據圖2-3JDBCAPI的結構層次3.JavaBean技術3.1JavaBean技術介紹什么是JavaBean?它是一種Java類,通過封裝屬性和方法成為具有獨立功能、可重復使用的并且可以與其它空間通信的組件對象。JavaBean被組織成為數據包(Package)以便進行管理。JavaBean的結構必須滿足一定的命名約定,這些約定由Sun和其它幾個大公司指定,成為JavaBeanAPI。只要遵守JavaBeanAPI的命名約定,就可以開發(fā)出可重用且獨立的Java組件,在JSP中,使用Bean標簽集合,JSP開發(fā)者不需要編寫任何代碼就能利用Java強大的功能為頁面添加動態(tài)元素。JSP強大功能的一個方面是它使用JavaBean的能力。我們可以在JavaBean中編寫可重用的代碼段(如數據庫連接)和頁面邏輯部分,也可以通過使用JavaBean減少JSP頁面中腳本語言的利用率。這將使JSP頁面更干凈,更容易維護,更容易被非程序員接受。3.2JavaBean的種類將Beans按功能分類:(1)可見的Bean(2)不可見的Bean1.可見的Bean(VisualBean)可見的Bean顧名思義就是可以顯示出來的Bean,通過屬性接口接受數據并將顯示數據信息,這就是可見Bean的功能。2.不可見的Bean(InvisibleBean)不可見的Bean就是顯示的Bean,在程序內部起作用。不可見的Bean在JSP程序中往往用來執(zhí)行對數據庫的操作和封裝事務邏輯等操作,這樣可以很好的將業(yè)務邏輯和前臺程序相分離,使系統(tǒng)更健壯更靈活,因此像這種Bean就是一個組件,且因為是不可見的,稱之為不可見的Bean。3.3JavaBean的形式和要素JavaBean是一種組件技術,所以JavaBean將內部的動作封裝起來,看不到它的運行機制,它只提供最小限度的屬性接口供外殼控制應用。JavaBean為了提供組件的功能,必須滿足以下3個條件?!碛幸粋€無參數的構造函數(NOParameter,Constructor)?!崿F(xiàn)SerializabelInterface.·必須提供PropertyInterface屬性接口。1.擁有一個無參數的構造函數(NOParameter,Constructor)JavaBean要有無參數的構造函數。無參數構造參數函數是指利用new生成新的類的時候不必提供特別的參數即可產生類。無參數構造函數是JSPContainer在自動使用JavaBean的時候參考的構造函數。即當我們想要接受表單數據的時候,將用戶輸入的信息存到名為FormBean的Bean里面進行處理。在這種情況下,JSPContainer將自動生成FormBean的實體。此時JSPContainer就是使用FormBean的無參數構造函數生成的實體,再根據用戶輸入值變換實體的。2.實現(xiàn)SerializableInterface在Java里面可以將JavaBean類以當前狀態(tài)存入文件中,而且可以通過網絡傳遞給別的機器。Java的這一功能被稱為Serializable。但在JSP中使用到的JavaBean,不必聲明Serializable也可以正常運行(這是Tomcat5.0為標準,其他版本和其他產品的JSPContainer有可能不一樣),所以implementsSerializable這個關鍵詞可以省略。當然如果像嚴格遵循JavaBean的規(guī)范的話,聲明Serialiazzble也可以。3.必須提供PropertyInterface屬性接口在JavaBean中封裝了一些我們需要操作的數據。比如在做用戶登錄驗證的時候,將用戶名和密碼封裝在JavaBean中。如果不提供相應屬性的接口,我們就無法對Bean中的數據做任何操作。所以我們在編寫JavaBean的時候必須提供屬性接口。JavaBean的屬性接口使用以getXXX(),setXXX()開頭的方法來執(zhí)行其操作,對JavaBean類型的屬性也可以使用isXXX()方法來獲得這個屬性。4.利用Java技術實現(xiàn)基于Web的多數據庫訪問4.1數據庫的連接使用JBuilder2006連接SQLServer2005步驟如下:(1)下載并安裝JDBC驅動由于使用Java的人越來越多,使得微軟不得不提供SQLserver的jdbcdriver,SQLServer2005的jdbc驅動名為microsoft.sqlserver.jdbc.SQLServerDriver。(2)設置SQLServer2005進入SQLServer配置管理器(SQLServerConfigurationManager)在左邊窗口選擇“SQLServer2005網絡配置”下面的分支--SQL2005的協(xié)議.在右邊窗口中右鍵點擊“TCP/IP”,選“屬性”,再選擇“IP地址”將表單中的“TCP端口”的值都改成1433(動態(tài)端口可以不改),然后點“確定”。.重啟“SQLServer”和“SQLServerBrowser”這兩項服務。圖4-1SQLServer配置管理器設置圖打開SQLServer外圍應用配置器,選擇“服務和連接的外圍應用配置器”,在“遠程連接”中選擇“同時使用TCP/IP和namedpipes(B)”,然后點“應用”。圖4-2服務和連接的外圍應用配置器圖(3)設置環(huán)境變量找到安裝驅動后所產生的sqljdbc.jar文件,并將其路徑加在環(huán)境變量classpath中.圖4-3設置環(huán)境變量(4)編寫連接語句首先加載SQLServer驅動程序,就是在class的forname方法中,引用sqlserver驅動的主要類com.microsoft.sqlserver.jdbc.SQLServerDriver。設置連接的url。url的標準寫法為:jdbc:sqlserver://hostname:1433;DatabaseName=?;其中hostnme數據庫主機名或著ip地址。數據庫連接實力如下,其中l(wèi)ocalhost代表本機。Stringuser="sa";

Stringpass="000000”StringriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=BookStore";

ConnectiondbConn=null;

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("ok");

dbConn=DriverManager.getConnection(dbURL,user,pass);

System.out.println("ConnectionSuccessful!");

}catch(Exceptione){

e.printStackTrace();

}4.2實現(xiàn)對數據庫的一般查詢StatementJDBC提供了statement、resultset與metadata三個類來與數據庫溝通。Statement負責傳送所要執(zhí)行的SQL命令給數據庫,resultset負責用來接受從數據庫返回的查詢結果,最后metadata用來描述數據。1、創(chuàng)建Statement對象(要想執(zhí)行一個SQL查詢語句,必須首先創(chuàng)建出Statement對象,它封裝代表要執(zhí)行的SQL語句)并執(zhí)行SQL語句以返回一個ResultSet對象,這可以通過Connection類中的createStatement()方法來實現(xiàn)。Statementstmt=con.createStatement();2、執(zhí)行一個SQL查詢語句,以查詢數據庫中的數據。Statement接口提供了三種執(zhí)行SQL語句的方法:executeQuery()、executeUpdate()和execute()。具體使用哪一個方法由SQL語句本身來決定。方法executeQuery用于產生單個結果集的語句,例如SELECT語句等。方法executeUpdate用于執(zhí)行INSERT、UPDATE或DELETE語句以及SQLDDL(數據定義語言)語句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE語句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一個整數,指示受影響的行數(即更新計數)。對于CREATETABLE或DROPTABLE等不操作行的語句,executeUpdate的返回值總為零。方法execute用于執(zhí)行返回多個結果集、多個更新計數或二者組合的語句。一般不會需要該高級功能。下面給出通過Statement類中的executeQuery()方法來實現(xiàn)的代碼段。executeQuery()方法的輸入參數是一個標準的SQL查詢語句,其返回值是一個ResultSet類的對象。ResultSetrs=stmt.executeQuery("select*fromDBTableName");要點:JDBC在編譯時并不對將要執(zhí)行的SQL查詢語句作任何檢查,只是將其作為一個String類對象,直到驅動程序執(zhí)行SQL查詢語句時才知道其是否正確。對于錯誤的SQL查詢語句,在執(zhí)行時將會產生SQLException。一個Statement對象在同一時間只能打開一個結果集,對第二個結果集的打開隱含著對第一個結果集的關閉。如果想對多個結果集同時操作,必須創(chuàng)建出多個Statement對象,在每個Statement對象上執(zhí)行SQL查詢語句以獲得相應的結果集。如果不需要同時處理多個結果集,則可以在一個Statement對象上順序執(zhí)行多個SQL查詢語句,對獲得的結果集進行順序操作。importjava.sql.*;publicclassResultSetTest{publicstaticvoidmain(Stringargs[]){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:studlist");Statementstmt=con.createStatement();ResultSetrs1=stmt.executeQuery("selectnamefromstudent");ResultSetrs2=stmt.executeQuery("selectagefromstudent");//此時rs1已經被關閉while(rs2.next()){System.out.println(rs2.getObject(1));}rs2.close();stmt.close();con.close();}catch(Exceptione){System.out.println(e);}}}4.3JavaBean的設計根據對系統(tǒng)的分析可知,任何功能的實現(xiàn)都要對數據庫進行操作,在不同JSP頁面中經常存在相同的數據庫操作,一段代碼要在許多地方應用,比如數據庫的連接,所以在系統(tǒng)的開發(fā)過程中,需要找到一種儲存公用代碼的方法來避免重復。JavaBean是JAVA中的一種可重復使用的組件,可分為兩種:一種是有用戶界面的JavaBean,另一種是負責處理事務(如數據運算,操縱數據庫)的JavaBean??偟恼f來,JSP和JavaBean搭配使用,有3個好處:使得HTML與Java程序分離,這樣便于維護代碼。如果把所有程序的代碼都寫到JSP中,會使代碼復雜,難以維護??梢越档烷_發(fā)JSP網頁人員對Java編程能力的要求。JSP側重于生成動態(tài)網頁,事務則有JavaBean來完成,這樣可以充分利用JavaBean組件的可重用性特點,提高網站的開發(fā)效率。因為本系統(tǒng)的開發(fā)語言為JSP,所以通過使用JavaBean,將重復使用的代碼封裝在其中,然后放入WEB-INF/class/目錄下,可以達到事半功倍的效果。下面是本系統(tǒng)幾個重要的JavaBean。4.3.1數據庫連接JavaBean本系統(tǒng)所使用的數據庫為Access,在Windows平臺下不需要加載額外的驅動包,下面編寫與數據庫連接的JavaBean,名為DBConnecion.java,其中對數據庫進行連接的函數getConnToAccess()的關鍵代碼如下所示:privateStringAccessDriver;//保存Access驅動程序privateStringAccessURL;//保存Access連接字符串privateStringAccessPath;//保存Access數據庫的路徑AccessURL=”jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=”;//驅動鏈接AccessPath=”C:/Tomcat5.5/webapps/itmis/WEB-INF/itmis.mdb”;//數據庫路徑publicConnectiongetConnToAccess(){try{AccessURL=AccessURL+AccessPath;Class.forName(AccessDriver).newInstance();conn=DriverManager.getConnection(AccessURL);}catch(Exceptione){}returnconn;}該函數的具體實現(xiàn)過程為:首先定義號載入驅動的AccessURL串,然后定義好配置mdb文件的的AccessPath串,在方法的構造中首先將兩個串合并得到數據庫的路徑,創(chuàng)建AccessDriver的實例后,在DriverManager.get方法中傳入數據庫路徑,從而完成數據庫的連接。4.3.2更新登錄信息JavaBean在用戶登錄系統(tǒng)之后,通過一個Login.Java的Bean更新用戶的登錄信息,包括最后登錄的IP地址和最后登錄的時間,功能的實現(xiàn)其中主要是通過其中一個UpdateLogin()的函數,下面是該函數的代碼,其中的參數s1、s2是最近登錄后獲取的IP地址和登錄的時間,ID是管理員的ID編號,該段代碼更新成功返回Ture,否則返回False。publicbooleanUpdateLogin(Strings1,Strings2,intID){Stringsql="";try{ConnectionConn=DBConn.getConn();//鏈接Statementstmt=Conn.createStatement();//聲明ResultSetrs=null;sql="updateAdminset";sql+="LastLoginIP='"+s1+"',";sql+="LastLoginTime='"+s2+"',";sql+="LoginNum="+iNum+"whereAdminID="+ID;stmt.executeUpdate(sql);stmt.close();Conn.close();returntrue;}catch(SQLExceptione){System.out.print(sql);returnfalse;}}實現(xiàn)輔助功能JavaBean文件名為Function.java,主要包含了一些實現(xiàn)特殊功能比如字符轉換的函數,常用的主要有轉換字符編碼的getStrCN函數,檢測數據是否為空的Checkdate函數,和轉換字符為整型的StrToInt函數,他們的實現(xiàn)代碼如下:publicintStrToInt(Strings){try{inti=Integer.parseInt(CheckReplace(s));returni;//返回轉化以后的字符串}catch(Exceptione){return0;}該段代碼中的Integer.parseInt負責把用來轉化字符串為整型。publicStringCheckDate(String[]s1,String[]s2){booleanOK=true;StringBuffersb=newStringBuffer();try{for(inti=0;i<s1.length;i++){if(s1[i]==null||s1[i].equals("")||s1[i].equals("")){sb.append("<li>["+s2[i]+"]不能為空!");OK=false;}}if(OK)return"Yes";elsereturnsb.toString().trim();}catch(Exceptione){return"操作失?。?;}}……在JSP中輸出中文時要考慮中文的亂碼問題,getStrCN函數使用了String類的getBytes方法實現(xiàn)編碼轉換。publicStringgetStrCN(Strings){if(s==null)s="";try{byteabyte0[]=s.getBytes("GBK");//編碼設為GBKs=newString(abyte0);}catch(Exceptione){s="";}returns;}在編碼可轉換時首先要判斷串是否為空,若不為空則使用getByte方法將其每個字節(jié)轉換為GBK編碼,結果儲存在byte類型的數組內,然后在通過newString方法將數組轉化為字符串,仍然儲存在原來的字符串變量內,這樣就實現(xiàn)了轉換。4.4JavaBean在JSP中的應用在JSP中如果要調用JavaBean,需要使用<JSP:useBean>標記,<JSP:useBean>標記是用于JavaBean對象的動作標記,當在JSP網頁中使用它時,表示會產生一個JavaBean的實例。<JSP:useBean>標記有5個屬性:id、scope、class、beanName和type,如下:<JSP:useBeanid=”name”scope=”page|request|session|application”typeSpec/>其中,typeSpec一共有4種形式,分別如下?!lass=”classname”;·class=”classname”type=”typename”;·beanName=”beanName”type=”type

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論