亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用Java服務程序開發三層次數據庫應用程序

2019-11-18 12:12:35
字體:
來源:轉載
供稿:網友

  本文是有關java服務程序的三組系列文章之二。上個月( JDJ,第3卷,第1期),我向大家介紹了Java服務程序技術,以及如何將您現有的CGI程序移植到Java服務程序的方法。本文將不再重復以前介紹的內容。我先假定大家對Java Servlet API (應用程序設計接口)和Java數據庫連接API的基本知識已經比較熟悉。在本文中,我將介紹如何利用Java服務程序(Servlet)和Java數據庫連接(JDBC) 技術創建三層次數據庫應用程序。您將了解每一層的創建方法以及采用數據庫連接來創建Java服務程序所使用的技術。
  挑 戰
  某聞名公眾演說家對參加她舉辦的因特網講座的學生進行跟蹤調查。每次講座結束后,她都會與感愛好的學生交換名片。然后,把學生數據輸入她的數據庫程序。她并非把每張名片的數據依次輸入計算機,而是借助萬維網應用程序來完成這項工作。在每次舉辦講座時,她都在若干萬維網終端上設立萬維網應用程序。每位學生都在萬維網終端登記,輸入各自的姓名、所在公司、電子郵件(e-mail)地址、課程名稱和對課程的期望。萬維網應用程序還可顯示所有學生的最新名單。
  三層解決方案
  這個萬維網應用程序由三部分組成:瀏覽器、服務程序中間件和數據庫服務程序。這三層如圖1所示。
   利用Java服務程序開發三層次數據庫應用程序(圖一)
  圖1 三層次解決方案
  第一層使用瀏覽器,可充分發揮這一通用客戶端巨大的用戶安裝數的優勢。用一個Html表格作為用戶輸入界面,而數據庫查詢結果用HTML頁面返回。采用HTML頁面作為用 戶輸入和數據顯示的界面可降低對客戶端瀏覽器版本的要求。這種萬維網應用程序并不要求必須采用具有最新JDK修補程序的Java使能的瀏覽器。
  第二層采用運行Java服務程序的Web服務器。Java服務程序可訪問 菘?,并范\亓杏惺蕕腍TML頁面。請注重,Java服務程序不只運行于Sun Microsystems公司的Java Web Server上,您也可在下列服務器上使用Java服務程序:Microsoft IIS、Netscape FastTrack Server及EnterPRise Server以及O?Reilly公司的WebSiteProfessional。在Live Software公司的JRun產品(http://www.livesoftware.com)上也可實現Java服務程序的功能。Sun公司的Java Server主頁http://jserv.javasoft.com上列有支持Java服務程序的Web服務器列表。
  第三層是后端數據庫服務器。只要計算機安裝了JDBC驅動程序,那么Java服務程序就能從數據庫中提取數據。在本文所討論的情形里,公眾演說家的數據庫是MS-access, 所以,我們可以使用與Java Development Kit 1.1版或更高版本捆綁在一起的JDBC-ODBC驅動程序。
  應用程序的交互過程
  您可以看到,應用程序被劃分成三個不同的層次。圖2表示應用程序不同層次之間的交互過程。
   利用Java服務程序開發三層次數據庫應用程序(圖二)
  圖2 應用程序的交互過程
  下面介紹交互過程的每個步驟。 第一步: 用戶將信息輸入HTML表格。表格的數據被傳輸到在Web服務器上運行的Java服務程序中。
  第二步: Java服務程序對表格的數據進行分析,并創建一條SQL語句。然后,通過Java數據庫接口(JDBC)將該SQL語句傳輸到數據庫服務器。
  第三步: 數據庫服務器執行該SQL語句,并將一組結果返回給Java服務程序。
  第四步: Java服務程序對這組結果進行處理,并用其中的數據創建一個HTML頁面。隨后,該HTML頁面被返回到用戶的Web瀏覽器。
  對數據庫模式進行分析
  本文的公眾演說家正在將學生信息存入MS Access數據庫。該數據庫包括一個名為"Students"的數據表。表1定義了數據字段
   利用Java服務程序開發三層次數據庫應用程序(圖三)
   表1 數據庫結構
  設計Web瀏覽器界面
  瀏覽器界面包括一個主菜單頁面。用戶使用該頁面可選擇學生注冊,或顯示數據庫中的學生。列表1提供了主菜單的HTML代碼。
  學生注冊表
  學生使用HTML表格進行注冊。該表格采集姓名、電子函件地址、公司名稱和其它與課程相關的信息。圖3為學生注冊表。
   利用Java服務程序開發三層次數據庫應用程序(圖四)
  圖3 學生登記注冊表
  開發服務程序中間件
  服務程序中間件封裝了應用程序的業務邏輯。服務程序對表格中的數據進行分析,并構造一條SQL語句。隨后,該SQL語句被傳送到數據庫服務器。在SQL語句執行完畢后,數據庫服務器將結果集返回給服務程序。至此,服務程序對結果集進行處理,并為用戶構造一個HTML頁面。
  被創建的服務程序稱作StudentDBServlet。StudentDBServlet有執行下列功能的方法:初始化、對請求的服務、對學生數據的顯示和對學生的登記。下面具體介紹這些功能。
  服務程序的初始化
  在服務程序的生命周期內,當服務程序第一次被調用時,首先調用init()方法。列表3為init()方法的代碼清單。
  StudentDBServlet服務程序來說,一個數據庫連接被打開,并創建用于顯示學生列表或進行學記的預先預備好的SQL語句(Prepared Statement)。這個數據庫連接在服務程序的整個生命周期內都將保持打開的狀態。根據用戶的設計,用戶可以為每個SQL查詢打開或關閉一個連接。但在此應用中,數據庫連接僅打開一次。
  對用戶請求提供服務
  每次服務程序被調用時,service()方法會被調用。service()方法是服務程序的主要入口點(Entry Point)。但是,假如這是服務程序第一次被調用,那么就會先調用init()方法,然后再調用service()方法。
  本應用中的service()方法系用來將請求轉移給相應的處理方法。學生登記表中有一個名為“Register”的隱含字段。service()方法核對“Register”字段的值。假如該值非空(null),則registerStudent()方法就被調用。假如HTML頁面不存在該字段,則返回一個空值(null)。假如返回空值(null),則會執行displayStudent()方法。
   顯示學生名單
  displayStudent()方法包括訪問數據庫和顯示學生名單的業務邏輯。這是通過使用輔助的Student (學生)類實現的。列表4 給出了Student類的代碼。
  Student類有為每位學生保持信息的數據成員。Student類還有能根據表格數據或一組數據庫結果創建對象的構造程序。下列語句表示學生的姓是如何從表格數據中獲取 的。
  lastName = request.getParameter ("LastName");
  請求對象是HttpServletRequest的一個實例。請求對象包含表格數據。表格數據可通過調用getParameter( )方法并提供表格字段的名稱獲得。學生注冊表中包含有一個LastName字段。 (請參考我以前發表在JDJ的文章,其中具體討論了服務程序如何獲取表格數據)。
  Student類有存取其數據成員并以字符串方式表示其數據的方法。列表4中包括了Student類的方法代碼清單。toString()方法以普通的字符串格式返回數據成員。toWebString( )方法以HTML無序列表的格式返回數據。toTableString( )方法以HTML表格的格式返回數據。這些方法被用來創建學生名單。
  構造一個HTML頁面后就創建了學生名單。在列表3中的displayStudents()方法中,創建了HTML頁面的標題。隨后再創建顯示下列信息的表格標題。
  服務程序向數據庫服務器發出請求,獲得學生的名單。在init()方法中預備了下列SQL語句。 select * from Students order by LastName;
  SQL語句將根據姓氏并按照字母順序返回學生的名單。這組結果被用來創建HTML表格的主體。通過創建while循環語句,處理這組結果的每個記錄。該while循環語句的 部分代碼如下。
  int rowNumber = 1; while (dataResultSet.next( ) ) { aStudent = new Student(dataResultSet); tableBody += aStudent.toTableString(rowNumber); rowNumber++; }
  每個記錄都被用來創建一個新的Student對象。toTableString()方法被調用,以獲得學生數據的字符串表示。前面談到,toTableString( )方法以HTML表格的格式返回數據。
  在構造了表格主體后,結果集就被關閉。在主頁的底部,還提供了至主菜單頁面的瀏覽鏈接。
  在服務程序方面進行了大量的處理工作。但我們到現在還沒有結束。必須將HTML頁面返回給Web瀏覽器。這是通過在響應對象上打開一個輸出流實現的。響應對象是HttpServletResponse的一個實例。將HTML頁面返回給用戶的語句如下:
  PrintWriter outputToBrowser = new PrintWriter(response.getOutputStream()); response.setContentType("text/html") ; outputToBrowser.println(htmlPage); outputToBrowser.close( );
  為HTML設置了內容類型(content-type)后,用println()方法將htmlPage串返回給瀏覽器。圖4為StudentDBSServlet所返回的學生名單樣本。
  利用Java服務程序開發三層次數據庫應用程序(圖五)
  圖4 學生名單
  學生的登記處理
  registerStudent()方法根據HTML表格數據創建一個新的Student對象。這個Student對象被用來作為在init( )方法已經預備好的SQL語句中的參數。下列語句表示參數是如何設置的。
  registerStatement.setString(LAST_NAME_POSITION, aStudent.getLastName());
  所有參數設置完畢后,就執行SQL語句。該語句執行完畢后,新的學生數據就成功地插入到數據庫中了。
  此外,還為用戶構造了確認頁面。確認頁面包含成功地插入數據庫的數據列表。Student.toWebString()方法被調用,為無序列表提供一個HTML字符串。
  合
  至此,應用程序的全部三層均已構造完畢。用戶界面由在瀏覽器中顯示的HTML頁面組成。對瀏覽器的唯一要求就是必須能顯示HTML表格。Microsoft (微軟)公司和Netscape(網景)公司所提供的兩種主要瀏覽器均可輕松地滿足這一要求,所以能保證Web應用程序對瀏覽器是友好的。
  后端數據庫是采用Microsoft Access創建的。但只要存在相應的JDBC驅動程序,就可使用任何一種數據庫。在我們所討論的情形里,公

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区在线播放免费观看| 欧美激情视频在线观看| 97视频在线观看免费高清完整版在线观看| 91精品国产91久久| 国产丝袜一区视频在线观看| 97精品免费视频| 精品国内亚洲在观看18黄| 国产美女久久精品| 高清日韩电视剧大全免费播放在线观看| 日韩暖暖在线视频| 国产精品久久二区| 欧美性xxxx极品高清hd直播| www.日韩.com| 法国裸体一区二区| 亚洲成人动漫在线播放| 日韩精品中文字幕久久臀| 国产一区二区三区视频| 日本午夜在线亚洲.国产| 国产精品久久久久久影视| 2019最新中文字幕| 国产精品视频白浆免费视频| 精品福利樱桃av导航| 欧美黑人视频一区| 欧洲成人免费视频| 国产精品视频男人的天堂| 91九色国产视频| 国产一区二区三区高清在线观看| 日韩av有码在线| 久久久久女教师免费一区| 亚洲成年人影院在线| 欧美日韩精品二区| 国产精品日韩欧美大师| 少妇精69xxtheporn| 亚洲色图av在线| 国产成人av在线| 亚洲精品一区在线观看香蕉| 亚洲国产精久久久久久久| 欧美日韩在线视频一区二区| 亚洲人a成www在线影院| 伊人男人综合视频网| 亚州精品天堂中文字幕| 91视频8mav| 国产在线视频欧美| 久久综合国产精品台湾中文娱乐网| 欧美激情一区二区三区高清视频| 热99精品只有里视频精品| 日韩性生活视频| 日韩专区在线播放| 欧美日本黄视频| 色噜噜国产精品视频一区二区| 国产精品一区二区久久久久| 综合av色偷偷网| 国产一区二区三区精品久久久| 亚洲第一精品久久忘忧草社区| 亚洲人成网站色ww在线| 亚洲国产三级网| 亚洲欧美日韩国产精品| 日韩视频精品在线| 尤物精品国产第一福利三区| 国产不卡视频在线| 夜色77av精品影院| 亚洲欧美日韩综合| 久久这里只有精品99| 欧美丰满少妇xxxxx做受| 亚洲第一中文字幕在线观看| 国产成人精品午夜| 国产69久久精品成人| 欧美色道久久88综合亚洲精品| 亚洲精品v欧美精品v日韩精品| 亚洲国产精品视频在线观看| 亚洲影院在线看| 成人性生交xxxxx网站| 亚洲精品欧美一区二区三区| 国产精品丝袜白浆摸在线| 欧美性xxxx极品hd欧美风情| 青草青草久热精品视频在线网站| 欧美猛男性生活免费| 亚洲精品天天看| 91精品国产91久久久久久吃药| 狠狠躁夜夜躁人人爽天天天天97| 精品激情国产视频| 欧美日韩在线一区| 日韩欧美在线国产| 欧美在线视频在线播放完整版免费观看| 97视频在线免费观看| 欧美电影第一页| 国产丝袜精品第一页| 亚洲第一网站男人都懂| 欧美激情在线视频二区| 欧美乱大交xxxxx| 青青a在线精品免费观看| 亚洲欧美国产日韩天堂区| 亚洲91av视频| 国产精品成人国产乱一区| 亚洲国产精品久久久久秋霞蜜臀| 中文日韩在线观看| 亚洲人高潮女人毛茸茸| 欧美激情综合色综合啪啪五月| 91精品久久久久久久久不口人| 久久这里只有精品视频首页| 国产日韩在线视频| 国产免费久久av| 亚洲精品电影久久久| 亚洲在线视频福利| 午夜精品99久久免费| 精品一区二区三区四区在线| 久久偷看各类女兵18女厕嘘嘘| 在线观看日韩视频| 欧美有码在线观看视频| **欧美日韩vr在线| 俺去啦;欧美日韩| 国产精品成久久久久三级| 亚洲精品一区二区网址| 国产精品丝袜久久久久久高清| 亚洲成人久久久| 久久噜噜噜精品国产亚洲综合| 国产精品美女在线| 91在线国产电影| 日韩av免费在线播放| 久久精品国产v日韩v亚洲| 久久这里有精品| 日韩av电影在线网| 亚洲精品一区二三区不卡| 一区二区三区亚洲| 91精品视频在线播放| 九九精品在线观看| 九九热精品视频| 一区二区三区久久精品| 亚洲最大的网站| 久久精品国产成人精品| 亚洲天堂男人天堂| 国产成人久久精品| 91av网站在线播放| 欧美性一区二区三区| 97色在线观看| 久久久91精品国产一区不卡| 国产欧美精品日韩精品| 91热福利电影| 久久久久女教师免费一区| 亚洲国产91精品在线观看| 日韩免费精品视频| 日韩免费黄色av| 国产精品久久一区主播| 日韩中文字幕免费看| www.99久久热国产日韩欧美.com| 久久久av一区| 国产精品美女午夜av| 91免费在线视频| 精品久久久久久久久久ntr影视| 亚洲国产小视频在线观看| 日韩毛片在线看| 欧美尤物巨大精品爽| 秋霞成人午夜鲁丝一区二区三区| 亚洲影院色无极综合| 国产精品91视频| 一区二区欧美日韩视频| 国产一区二区三区在线观看网站| 久久久成人的性感天堂| 91福利视频在线观看| 成人动漫网站在线观看| 国产精品欧美在线| 久久免费国产精品1| 中文字幕欧美精品日韩中文字幕| 欧美性受xxxx黑人猛交|