




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
文檔下載站 更多資源下載 東軟信息技術學院畢業(yè)設計(論文)專用紙第1章 緒論11 引言Internet已經成為人們生活、工作、學習越來越離不開的平臺。Web技術已經不在局限于單純地提供信息服務,而是日益成為一個操作平臺,為用戶提供強大的服務功能。例如網上電子商務、社會信息數(shù)據(jù)庫等。網絡實現(xiàn)了遠程通訊,人們能夠通過計算機網絡進行電子郵件的發(fā)送,召開網絡會議,網上購物,甚至坐在家里就可以上大學(網上教育)。網絡有巨大的潛力待我們去開發(fā)與探索。因此,基于B/S體系架構創(chuàng)建這個校友網站,緊跟行業(yè)發(fā)展,滿足人們生活、學習的需要。建立一個基于B/S架構的校友錄,實現(xiàn)信息網絡化。通過較豐富的功能將 Web的技術特點體現(xiàn)出來。該系統(tǒng)可供包括在校、離校、以及游客登錄使用。登錄者可以查詢信息或者發(fā)布信息,也可以通過此網站與朋友聯(lián)系,并且還能夠創(chuàng)建虛擬班級等功能。系統(tǒng)中班級管理為必不可少的模塊項,主要是為了安全有效地存儲和管理登錄網站的用戶的信息,賦予管理員特定的權限,可以對用戶進行分類,添加,刪除,修改等。方便網站的管理與維護。要實現(xiàn)這樣的功能,離不開后臺數(shù)據(jù)庫的支持。用戶驗證信息,收集到的用戶點擊信息,分析得出的關聯(lián)規(guī)則表等大量的數(shù)據(jù)都由數(shù)據(jù)庫管理系統(tǒng)管理。本文中數(shù)據(jù)庫服務器端采用了Oracle作為后臺數(shù)據(jù)庫,以先進的JDBC技術與數(shù)據(jù)庫連接,結合SQL語句處理對用戶分類,添加,刪除,修改等操作,使Web與數(shù)據(jù)庫緊密聯(lián)系起來。整個個性化頁面生成系統(tǒng)主要由使用JSP技術開發(fā)實現(xiàn)個性化Web頁面生成和JS結合JavaBeans技術實現(xiàn)組件重用兩部分組成。整個系統(tǒng)結構如圖1-1所示。用戶JSP頁創(chuàng)建班級添加,刪除,修改等權限操作Web服務器Database服務器圖1-1 系統(tǒng)結構圖 本文作者主要完成客戶端,Web服務器端應用程序和數(shù)據(jù)庫的制作,實現(xiàn)網上虛擬班級的創(chuàng)建,管理員注冊/登陸、班級管理員對用戶進行分類,添加,刪除,修改等功能。實現(xiàn)與完善整個基于B/S校友錄網站的組織建立和測試工作。12 背景121 B/S模型的優(yōu)點幾乎沒有限制的客戶端訪問和極其簡單化的應用程序部署和管理是B/S模型的優(yōu)勢所在。它和C/S模型比較優(yōu)點極為突出。兩層技術模型(Two-Tier Architecture)是指客戶機直接與服務器交流,沒有其他服務介入的技術模型。對用戶量在12100的局域網環(huán)境中,兩層模型的確是個不錯的方案。由于該模型中,所有的用戶連接都是被保持的,也就是說即使在空閑狀態(tài),連接依然存在。所以,用戶的并發(fā)請求數(shù)量有限的。為了解決這個限制,使得成千上萬的用戶可以被無顧慮地添加,我們最好選用三層模型。B/S結構,即Browser/Server(瀏覽器/服務器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者說是改進的結構。用戶界面完全通過瀏覽器實現(xiàn),一部分事務邏輯在前端實現(xiàn),但是主要事務邏輯在服務器端實現(xiàn),形成三層結構,是一種全新的軟件系統(tǒng)構造技術。B/S模型結構圖如下所示:圖1-2 B/S模型結構圖從上圖可見 這種結構的一個重要的特點是,用戶可以完全不需要安裝客戶端軟件,當然也不需要擔心任何軟件升級和不兼容等任何客戶端所遇到的問題。相比之下,B/S模型的優(yōu)點顯而易見,更適合這個網站的構建,有利于網站的維護和擴充。122 JSP技術發(fā)展背景Web技術的迅猛發(fā)展正推動Internet上信息服務類的進步。WWW服務的基礎是HTML語言。這個系統(tǒng)模塊中用到的JSP技術是在HTML語言的基礎上使用腳本語言對網頁的對象模型進行編程。JSP全稱JavaServerPages,它是由Sun Microsystems公司提出、許多公司參與建立的一種動態(tài)網頁技術標準。它誕生在1999年6月1日。目前國內外已經在廣泛地使用JSP。隨著JAVA語言得到普及,越來越多的公司開始關注JSP的前景。傳統(tǒng)的動態(tài)網頁制作包括CGI、ASP、JSP三種,而JSP具有明顯的優(yōu)勢。使用CGI-BINJ接口是一個最早的動態(tài)WEB頁面問題的解決方案。缺點,CGI程序必須從CGI接口讀入一長串的字符串,再從字符串中取得所需要的數(shù)據(jù)并加以處理。過程十分繁瑣。另一個缺點,除了Perl是解釋語言外,其他都是編譯式的語言。每次修改后,都必須重新編譯一次,這給開發(fā)人員帶來麻煩,增加了工作量。ASP和JSP都能取代CGI使網站建設和發(fā)展變得簡單快捷。盡管JSP技術和ASP在許多方面都有相似的,但仍然存在很多不同之處,其中最本質上的區(qū)別在于:兩者是來源于不同的技術規(guī)范組織,其實現(xiàn)的基礎,WEB服務器平臺要求不相同。1)作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。一次寫入,之后,可以運行在任何具有符合JavaTM語法結構的環(huán)境。取代之過去單一平臺開發(fā)。 ASP主要工作環(huán)境是微軟的IIS應用程序結構,又因Activex對象具有平臺特性,所以ASP技術不能很容易地實現(xiàn)在跨平臺的WEB服務器的工作。2)從開發(fā)人員的角度來看其區(qū)別在于:ASP僅支持組件對象模型COM,而JSP技術提供的組件都是基于JavabeansTM技術或JSP標簽庫。3)JSP標簽可擴充性。JSP技術能夠使用開發(fā)者擴展JSP標簽,JSP開發(fā)者能定制標簽庫,減少對腳本語言的依賴4)生成可重用的組件。JSP基于組件的技術方法加速了總體開發(fā)過程。 JSP組件(Javabeans,或定制的JSP標簽)是跨平臺可重用的。Javabeans組件可以訪問數(shù)據(jù)庫,并能以分布式系統(tǒng)模式工作于UNIX和WINDOWS平臺。5)易于維護性。 基于JSP技術的應用程序比基于ASP的應用程序易于維護和管理。JSP突出的組件技術使修改內容而不影響邏輯或修改邏輯而不影響內容變得很容易實現(xiàn)。如上的比較不難看出,JSP技術編寫的程序運用要更加靈活,可擴展性更強。第2章 需求分析21 任務描述系統(tǒng)模塊的設計應該遵循整個系統(tǒng)總體設計思路。即基于B/S模型構建校友錄。系統(tǒng)的總體設計應該是提供給上網瀏覽者一個效率高,能容豐富的網絡空間。包括用戶可以在線聊天,上傳下載圖片,網上購物等種種功能。其中校友錄中必不可少的主體模塊之一就是網上虛擬班級的創(chuàng)建,它將提供的是一個互動的虛擬空間。班級作為一個整體包含了許多的個體,用戶作為班級的個體可以在班級范圍能有自己的行為。與其相關涉及到班級的長期維護和管理等功能。班級管理員充當維護者這個角色,他可以將班級成員組織在一起,而且擁有班級管理功能的使用權。而針對用戶將使用到的功能和特點,將此系統(tǒng)模塊劃分為班級注冊、管理員信息注冊、管理員權限操作(包括:班級成員的刪除、班級的刪除、更改班級名稱、添加班級管理員、班級留言等),數(shù)據(jù)庫設計等幾個子模塊。那么系統(tǒng)功能的使用者應該是班級管理員,所有的功能設計都應該以管理員的權限為核心。此處管理員權限的功能設計定要引用到大量的數(shù)據(jù)庫操作,這就需要考慮到為虛擬班級分配系統(tǒng)存儲空間,建立數(shù)據(jù)庫表。那么,選擇數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫用戶和表,建立與數(shù)據(jù)庫的連接,使用SQL語言操作數(shù)據(jù)庫就是系統(tǒng)后臺設計圍繞的主體。能否將系統(tǒng)的前后臺合理有效的關聯(lián)是整體系統(tǒng)模塊成功的關鍵。22 用戶特點系統(tǒng)應該圍繞著用戶特點設計。管理員有權將普通班級成員升級為班級管理員,協(xié)調日常工作。有權將班級管理員降級為普通班級成員,將違反網站用戶協(xié)議的,對班級造成不良影響的普通班級成員從本班級中除名。有權將班級的名稱進行合理更改,使其更容易查詢。有義務定期維護班級校友錄,發(fā)展班級成員,使舊時的班級重新成為一個整體。以便參加網站為校友們不定期舉辦的豐富多彩的活動,發(fā)布班級通知等。遵守網站用戶協(xié)議,管理班級成員不傳播任何非法的、傷害性的、淫穢等信息資料。有義務作為班級成員與網站之間的溝通紐帶,及時將雙方所需的信息進行溝通??梢詫⒆约旱乃袡嗬平唤o另一位班級成員。23 條件與限制此系統(tǒng)模塊的設計主要突出班級管理員的功能和特點,它與普通的用戶有很大的區(qū)別。系統(tǒng)雖然對所有用戶開放,但部分資料和功能只針對班級管理員開放;新增用戶需要通過申請、注冊等方式獲得希望得到的權限和信息;如果不遵守網站用戶協(xié)議,或傳播任何非法的、淫穢等信息資料,將立即取消用戶服務帳號,并視情節(jié)的嚴重性付諸于法律。數(shù)據(jù)庫中要以班級名稱和用戶名為主鍵,這就要求用戶創(chuàng)建初始信息是必須填寫這兩項。為了確保用戶輸入數(shù)據(jù)的有效性并與數(shù)據(jù)庫字段設計相符,所以對用戶輸入的表單項也要做相應的約束。24 系統(tǒng)配置241 Hardware (硬件)硬件環(huán)境(訪問者):建議用戶在力所能及的情況下采用較高配置的硬件資源。硬件環(huán)境(開發(fā)者):pentiumIII處理器,256M內存,10G磁盤空間。242 Software (軟件)訪問者:IE、Netscape等瀏覽器。最好是IE瀏覽器,本網頁在IE瀏覽器下通過了測試。開發(fā)者:1)Operating System (操作系統(tǒng)):Windows2000/NT/XP2)Tools (工具):EditPlus 2, DreamweaverMX3)Database (數(shù)據(jù)庫):Oracle8i4) Server (服務器) :ApacheTomcat/WebSphere5)Run Circumstance (運行環(huán)境) :安裝JDK1.4支持Java運行。6)Technic (技術):前臺網頁的設計采用JSP技術制作。JSP網頁吸引人的地方之一就是能結合JavaBeans技術來擴充網頁中程序的功能。JSP程序實際上JSP元素、Java程序和HTML文檔的混合體,JSP以Java作為其腳本語言,幾乎繼承了Java語言的所有特點。25 編碼規(guī)范文件名用英文表示其功能,起到一目了然的作用。文件歸類,以不同文件夾存放圖片LifengImageJSP LifengJSPJavaBeanWEB-INFclasseslifengworks出錯信息頁的制作。用戶操作錯誤時,返回出錯信息。第3章 系統(tǒng)設計31 模塊劃分 此系統(tǒng)模塊要的功能是創(chuàng)建班級和班級管理員操作權限的實現(xiàn),圍繞著這個目標把系統(tǒng)制作劃分為登錄子模塊、創(chuàng)建班級子模塊、管理員權限子模塊和數(shù)據(jù)庫模塊。如圖3-1所示。首頁可以作為其它功能項的一個向導,起連接的作用,而管理員權限子模塊又被細分為刪除功能子模塊、查詢功能子模塊、管理員班級留言功能塊。首 頁 數(shù)據(jù)庫管理權限登錄驗證管理員注冊創(chuàng)建班級刪除功能查詢功能更改功能留言功能圖3-1 模塊劃分結構圖 登錄子模塊和創(chuàng)建班級子模塊在系統(tǒng)中的實現(xiàn)其功能對所有用戶可見,而刪除、查詢、管理員班級留言功能只針對身份被標識為管理員的用戶開放。32 設計模式模塊1:用戶身份驗證設計。用戶進入該系統(tǒng),首先需要進行身份驗證。如果通過了身份驗證,則為合法用戶,同時其帳號和權限等資料將會保存在Session對象,Session對象儲存的信息是局部的,隨用戶不同而不同的。當用戶訪問系統(tǒng)的各個子系統(tǒng)時,系統(tǒng)自動從Session對象中獲取用戶的資料,而無須將用戶的資料作為請求方法、參數(shù)名、參數(shù)值追加到URL中。這樣可以避免用戶惡意修改URL中的值來非法訪問。Session對象中的變量設置:Session“UserID” 用戶帳號Session“Roles” 用戶權限 模塊設計流程如圖3-2所示。開 始輸入用戶名、密碼判斷數(shù)據(jù)輸入是否合法?是否進 入 班 級報錯信息結 束圖3-2 登錄驗證流程圖 用戶登錄這個過程是必須的,因為只有這樣才能從數(shù)據(jù)庫中得到用戶的帳號和權限。模塊2:創(chuàng)建班級功能的設計。通過了注冊后的用戶才可以創(chuàng)建新班。用戶創(chuàng)建時必須輸入合法的班級名稱和基本信息,班級名被設定為數(shù)據(jù)庫Class_table的主鍵,系統(tǒng)將判斷新班級的名稱是否與數(shù)據(jù)庫中現(xiàn)有的記錄重復,如果重復就違反了主鍵唯一的原則,數(shù)據(jù)將不能夠被正確的輸入數(shù)據(jù)庫,所以要返回給用戶一個信息。否則,班級創(chuàng)建成功,創(chuàng)建者還需要補充用戶信息。此模塊的設計流程如圖3-3所示。開 始填寫班級信息:(所屬省份、城市、地區(qū)、學校;班級名稱、年級;)是否有效?是否成功信息(注冊成功)報錯信息(班級已存在)是填寫個人信息:姓名、生日、E-mail、聯(lián)系方式是否有效? 否成功信息是退 出圖3-3 創(chuàng)建班級流程圖 模塊3:查詢功能設計。提供給用戶查詢功能,方便使用者查找親友同學所屬哪個班級,還可以統(tǒng)計出目前班級擁有多少成員。此項功能是根據(jù)使用者輸入的關鍵字遍歷數(shù)據(jù)庫,查找有無匹配的記錄。如果記錄存在將記錄輸出到用戶瀏覽端,否則返回一條用戶信息。例如,查詢姓名為李四的人。模塊設計流程如圖 3-4所示。開 始輸入查詢關鍵字判斷查詢類型成員名班級名是否有匹配的記錄?接口(否) 接口(是)顯示詳細信息顯示沒有記錄結 束圖3-4 查詢功能流程圖 模塊4:刪除功能設計。作為班級管理員應該有管理班級的能力,刪除功能的設計正是為班級管理員設置的管理功能之一。其中包括兩部分,一是刪除班級成員,二是刪除整個班級。這個功能的實現(xiàn)需要使用SQL語言判斷管理員所在的班級,遍歷數(shù)據(jù)庫中有無使用者欲刪除的記錄。如果記錄存在,將記錄刪除。否則,返回信息到用戶瀏覽端。例如把姓名為李四的人刪除或刪除班級計算機一班。模塊設計流程如圖3-5所示。開 始輸入刪除關鍵字判斷刪除類型班級名成員名是否有匹配的記錄?接口(否) 接口(是)顯示沒有記錄將記錄刪除結 束 圖3-5 刪除功能流程圖 33 數(shù)據(jù)庫安全及設計描述數(shù)據(jù)庫設計無疑是以上功能實現(xiàn)的基礎。制作數(shù)據(jù)庫表首先要確定實體的屬性和實體間的關系。數(shù)據(jù)庫要存儲所有的班級信息和用戶信息,這些信息是班級的屬性和用戶的屬性。一個班級可以有若干的成員,也可以有一個以上的管理員。一個管理員只屬于一個班級。實體間關系如圖3-6所示。圖3-6 E-R圖角色設計初步將系統(tǒng)中的用戶角色分成三級,如表3-1所示 。表3-1 角色劃分權限 描述 標記(Roles)一般用戶 查詢資料 1 班級管理員 查詢;數(shù)據(jù)的錄入、修改和刪除 2 系統(tǒng)管理員 查詢;數(shù)據(jù)的錄入、修改和刪除;用戶帳號、權限的維護 3 權限設置使不同用戶對不同模塊有不同的操作權限。如表3-2所示。表3-2 權限設置模塊 標記 說明 班級情況 SchoolWrite “1”:在該模塊中有數(shù)據(jù)錄入、修改的權限“0”:在該模塊中只能查看 用戶檔案 UserWrite “1”:在該模塊中有數(shù)據(jù)錄入、修改的權限“0”:在該模塊中只能查看 計劃、總結、保留文件 FileWrite “1”:在該模塊中有數(shù)據(jù)錄入、修改的權限“0”:在該模塊中只能查看 學校名稱錄入用于錄入班級的名稱、類型,并自動生成唯一的ID號。ID號為長整型數(shù)字類型。 ID將根據(jù)班級錄入的順序,自動從1遞加上去。34頁面設計客戶端頁面是用戶和服務器之間實現(xiàn)人機交互的一個介質。對它的制作要求簡潔大方,色彩搭配要協(xié)調。第4章 系統(tǒng)實現(xiàn)41模塊的詳細設計411 登錄機制網頁中建立用戶登錄機制,為的是限制未經過登錄的瀏覽者不能創(chuàng)建班級。讓用戶以帳號方式登錄網頁是一種可行的網頁管理方法。在這個系統(tǒng)模塊的后臺數(shù)據(jù)庫中建立USER_TABLE表,用來對用戶的登錄帳號和密碼加以保存。此處設置了用戶對象的session值。通過獲取session值,遍歷數(shù)據(jù)庫,可以確定用戶屬于哪個班級和用戶在班級中的身份。結構圖如 4-1所示。 數(shù)據(jù)檢查失敗用戶瀏覽 通過數(shù)據(jù)檢查 導向 導向 讀出未登錄數(shù)據(jù)庫圖4-1 登錄機制表4-1是這個模塊的實現(xiàn)文件。表4-1 實現(xiàn)文件文件說明login.JSP輸入用戶登錄名和密碼。login_confirm.jsp讀取lifeng.jsp中用戶輸入的班級的屬性。用戶若成功登錄,將把登錄的帳號和密碼寫入session對象。Session.setPutValue(“userName”,userName); Session.setPutValue(“userPassword”,Password);412 創(chuàng)建班級班級創(chuàng)建是這個系統(tǒng)模塊的核心功能之一。系統(tǒng)通過在數(shù)據(jù)庫中遍歷用戶輸入的班級名來判斷班級的建立是否有效。使用腳本語言限制表單內的輸入方式,如果表單值為空,在用戶端輸出“班級名不能為空”。如下圖所示;圖4-2 創(chuàng)建班級頁為了保證不重復創(chuàng)建班級,同時也防止數(shù)據(jù)庫沖突,在得到request.getParameter(“class_name”)時必須對數(shù)據(jù)庫遍歷。如果班級名已經存在,返回信息“班級已經存在”。此處將bean文件引入,做數(shù)據(jù)庫的連接工作,通過Insert語句把班級的屬性插入到數(shù)據(jù)庫中。SQL條件查詢語句檢查表單中輸入的班級信息是否與數(shù)據(jù)庫中重復。String sql=select * from CLASS_TABLE where class_name= + name1 + ;ResultSet rs = RegisterBean.executeQuery(sql);如果用戶輸入的班級名稱在數(shù)據(jù)庫中已存在,那么返回到register.jsp頁,得到session值。 if(搜索到相同記錄) 關閉數(shù)據(jù)庫;session.putValue(register_message,班級已存在!);/設置返回信息。從新導回到創(chuàng)建頁面% else 創(chuàng)建成功,記錄存入數(shù)據(jù)庫; 此處從表單中取出客戶端的輸入值必須被轉換成與數(shù)據(jù)庫中字段類型相一致的類型,否則不能夠將出客戶端的輸入值正確存入數(shù)據(jù)庫。此子模塊使用的文件如下表所示。表4-2 實現(xiàn)文件文件說明Lifeng.jsp輸入要創(chuàng)建的班級的屬性,包括,班級名稱、學校、入學年級、所在系等。Rerere.jsp讀取lifeng.jsp中用戶輸入的班級的屬性。do_register.jsp驗證數(shù)據(jù)庫數(shù)據(jù)的唯一性,并將合法數(shù)據(jù)存儲到數(shù)據(jù)庫。413 班級管理員的生成班級管理員這個角色起到對班級日常工作的維護和管理的作用,角色權限高于普通的班級成員,那么需要特定的屬性來標識管理員的身份。系統(tǒng)表中增加Admi字段,若為管理員此列不為空,否則此列為空。從圖4-3可以看出ADMI列不為空的都是班級管理員。圖4-3 user_table表結構班級管理員也屬于這個班級的一個成員,將他們存放在一個表中可以節(jié)省系統(tǒng)表空間,減少數(shù)據(jù)冗余和表之間復雜的關聯(lián)。首位班級的創(chuàng)建者被系統(tǒng)默認成為該班級的管理員,他的session值被保留,班級建立成功的同時把他的登錄名存入class_table表的Admi字段中。414 刪除功能的實現(xiàn)主要技術環(huán)節(jié)是如何有效地與數(shù)據(jù)庫連接,并通過使用SQL語句對數(shù)據(jù)庫進行操作。刪除班級成員和班級是管理員權限的一項重要功能。設計的實施如下所述。從表單中取得字符串,然后查詢數(shù)據(jù)庫有無與其相等的記錄。如果有,按下刪除鍵可以將其刪除,如果記錄不存在,返回用戶信息,并可以繼續(xù)重新操作。具體流程:if(表單為空) 輸出班級成員數(shù)據(jù)庫表else(不為空) 查詢數(shù)據(jù)庫中有無匹配的記錄 String strSQL=select * from individual where zm=+new String(zm.getBytes(8859_1)+;rs=st.executeQuery(strSQL);輸出結果集 if(!rs.next()/遍歷到數(shù)據(jù)庫末沒有匹配記錄 返回給用戶信息:沒找到“” else(記錄存在) 執(zhí)行刪除,并刷新數(shù)據(jù)庫。String strDel=delete from individual where zm=+new String(zm.getBytes(8859_1)+;st.executeUpdate(strDel);rs=st.executeQuery(select * from individual);/刪除后更新數(shù)據(jù)庫;查詢語句的執(zhí)行繼續(xù)操作:繼續(xù)刪除/自身連接,刷新后返回到自身。關閉數(shù)據(jù)庫。 刪除班級是判斷管理員屬與那個班級,通過user_table表中class_name屬性和class_table表中class_name屬性把兩個表關聯(lián)起來。這樣班級管理員就只能刪除與他班級屬性相同的班級名和班級成員了。此處從表單中取出客戶端的輸入值必須被轉換成與數(shù)據(jù)庫中字段類型相匹配的類型,否則不能夠正確的進行數(shù)據(jù)庫遍歷。圖4-4 刪除頁415 查詢功能的實現(xiàn)主要技術環(huán)節(jié)是如何有效地與數(shù)據(jù)庫連接,并通過使用SQL語句對數(shù)據(jù)庫進行操作。如果用戶想要查找某人的信息或者想尋找某個班級中是否存在某人,那么這項功能正好滿足使用者的需要。設計思路是從表單中提取用戶輸入的字符,連接并查詢數(shù)據(jù)庫,如果查找到數(shù)據(jù)庫中存在相匹配的記錄,將其記錄輸出,否則返回一條用戶信息“不存在”。具體流程:if(表單為空) 查詢數(shù)據(jù)庫表else(不為空) 查詢數(shù)據(jù)庫中有無匹配的記錄 String strSQL=select * from individual where zm=+new String(zm.getBytes(8859_1)+;rs=st.executeQuery(strSQL); if(!rs.next()/遍歷到數(shù)據(jù)庫末沒有匹配記錄 返回給用戶信息:沒找到“” else(記錄存在) 執(zhí)行查詢語句,并刷新數(shù)據(jù)庫。strSQL=select * from individual where zm=+new String(zm.getBytes(8859_1)+;ResultSet rs10 = st.executeQuery(strSQL);/輸出結果集。繼續(xù)操作:繼續(xù)查找/自身連接,刷新后返回到自身。 關閉數(shù)據(jù)庫。416 留言功能的實現(xiàn)此模塊中通過獲取管理員的session值來確定數(shù)據(jù)庫操作的對象。班級管理員可以使用這個功能在本班能留言。具體實現(xiàn):此系統(tǒng)模塊使用的文件如表4-3所示。表4-3 實現(xiàn)文件文件說明Talk1.jsp輸入留言內容。獲取數(shù)據(jù)庫記錄集,將結果輸出到客戶端。Do_talk.jsp處理talk.jsp中表單中的值,將值存儲到數(shù)據(jù)庫。417用戶權限確認當用戶點擊進入一個班級時,他是普通成員還是管理員,他應該有哪些操作權限,此時識別用戶身份具有非常重要的意義,只有認清用戶的身份之后才能確定該用戶能夠執(zhí)行哪些操作。這也是本系統(tǒng)模塊設計的重要環(huán)節(jié)之一。功能實現(xiàn)使用了數(shù)據(jù)庫表關聯(lián)操作。首先取得用戶Session值,然后執(zhí)行如下語句:ResultSet rs=st.executeQuery(select class_table.class_name from class_table,user_table whereclass_table.class_name=+class_name+and class_table.admi=user_table.user_name);通過圖4-5和圖4-6的比較可以看到同一個用戶以不同身份進入兩個班級時,頁面的效果是不同的。被標識為管理員者才有使用刪除、留言等功能的特權。圖4-5 管理員登錄圖4-6 普通成員418 JSP對象的使用此系統(tǒng)實現(xiàn)多處使用了JSP的對象,如表4-4。表4-4 jsp對象對象名稱功能描述Request從客戶端取得信息Response將信息送給客戶端Session儲存在一個Session內的用戶信息,該信息僅可被該用戶訪問419 技術要點1)引用bean各功能模塊中需要頻繁的進行數(shù)據(jù)庫操作,如果每遇到要使用數(shù)據(jù)庫便建立一次鏈接將在一定程度上增大系統(tǒng)開銷,加大程序員的工作量,我們這里有效利用了JavaBean文件,使服務器事先建立數(shù)據(jù)庫鏈接對象,所有的數(shù)據(jù)操作都使用該鏈接,從而提高了服務器效率。具體做法以下將做描述。2)操作數(shù)據(jù)庫表空間是數(shù)據(jù)庫得邏輯存儲設備,它把數(shù)據(jù)庫信息組織成物理存儲空間。每一個數(shù)據(jù)庫用戶都可以設置一個缺省空間。缺省表空間用于在用戶創(chuàng)建數(shù)據(jù)庫對象時(表或索引),如果沒有指定表空間時存放數(shù)據(jù)庫對象。創(chuàng)建用戶時,如果不加指定,用戶的缺省表空間為SYSTEM表空間。JSP與數(shù)據(jù)庫連接的時候,需要使用一個合法的用戶登錄數(shù)據(jù)庫。此系統(tǒng)模塊在數(shù)據(jù)庫中建立用戶名為JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用戶JSPUSER權限。密碼為JSPUSER。一個訪問數(shù)據(jù)庫的程序段,對于不同的行為,要其執(zhí)行的SQL語句是不同的,其不同主要表現(xiàn)在查詢、插入或更新時的參數(shù)不同,于是我們引用JAVA類: 將數(shù)據(jù)庫的查詢、更新方法定義在Bean中。 在系統(tǒng)模塊中通過設置session值來確定應該操作數(shù)據(jù)庫中的哪條記錄,而且通過兩個表之間相同字段的關聯(lián)提高操作效率。4110 Bean的使用JavaBean的價值體現(xiàn)在它的一系列屬性里,使用這些屬性可以訪問JavaBean的設置。用一個人來做類比,如果這個人是一個JavaBean,那么他的姓名、身份證號碼和地址就是這些屬性。JavaBean已經做好了,你要做的事就是告訴JSP頁面它將要使用的bean的名稱,這可以通過標記來實現(xiàn): 。 在這個系統(tǒng)模塊的設計過程中,把連接數(shù)據(jù)庫時需要多次復用連接驅動命令,數(shù)據(jù)庫操作的方法引入Bean中。實踐中真正體現(xiàn)了JSP與Bean結合的優(yōu)勢。Bean中定義了查詢(executeQuery),更新方法(executeUpdate)。當JSP中執(zhí)行SQL語言操作數(shù)據(jù)庫時,將自動調用這兩個方法。42 數(shù)據(jù)庫的詳細設計421安裝驅動程序本系統(tǒng)模塊用JSP技術編寫,那么就必須借助與JDBC(Java DataBase Connectivity)來操作數(shù)據(jù)庫。JDBC是一組API(Application Programming Interface),即應用程序設計接口。JDBC共有四種類型:類型一,利用橋連接器(Bridge)的概念連接數(shù)據(jù)庫。類型二,運用由數(shù)據(jù)庫廠商提供的用于操作數(shù)據(jù)庫的API函數(shù)。類型三,這類驅動程序通過網絡協(xié)議與中間件連通,中間件負責轉換數(shù)據(jù)庫操作信息。類型四,這類驅動不通過任何中間件,而直接以Java數(shù)據(jù)庫驅動程序來執(zhí)行數(shù)據(jù)庫的訪問。相比之下,此系統(tǒng)選擇第三種類型的數(shù)據(jù)庫驅動。它的優(yōu)點更適合這個系統(tǒng)創(chuàng)建與數(shù)據(jù)庫的連接。Oracle自帶的JDBC驅動程序放在Oracle安裝目錄Oracle81jdbclib中。Java環(huán)境并不能自動找到該驅動程序。應用時可以在AUTOEXEC.BAT中設置如下:set classpath=c:oracleora81jdbclibclasses111.zip;c:oracleora81jdbclibclasses12.zip;或者把驅動程序壓縮包復制到Apache Tomcat服務器下的class目錄中。422建立用戶 JSP與數(shù)據(jù)庫連接的時候,需要使用一個合法的用戶登錄數(shù)據(jù)庫。此系統(tǒng)模塊在數(shù)據(jù)庫中建立用戶名為JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用戶JSPUSER權限。密碼為JSPUSER。 用戶的缺省表空間為SYSTEM表空間。423 系統(tǒng)表結構本系統(tǒng)模塊建立兩個數(shù)據(jù)庫基本表。表CLASS_TABLE存放用戶創(chuàng)建班級時輸入的基本信息。包括字段:、學校、班級名稱、年級、Admi(管理員);表中字段class_name,class_year,Admi,設class_name為主鍵。表USER_TABLE存放管理員的注冊信息。包括字段:用戶登錄名、真實姓名、生日、工作單位、工作地、Email,Tel,Admi。如圖4-7、4-8所示圖4-7 user_table表結構圖4-8 class_table表結構考慮到節(jié)省表空間,防止數(shù)據(jù)冗余和表之間關聯(lián)過于復雜,決定將所有的班級成員存放在一張表中,用字段ADMI標識管理員的屬性。424 操作數(shù)據(jù)庫 在執(zhí)行查詢動作之前,必須在程序中使用Connection對象的createStatement方法,建立Statement對象,以代表執(zhí)行的SQL語句。連接驅動,用戶登錄數(shù)據(jù)庫Class.forName(oracle.jdbc.driver.OracleDriver);String m_url=jdbc:oracle:thin:localhost:1521:lifengDB;String m_user=JSPUser; /JSPUser為數(shù)據(jù)庫用戶名。String m_password=JSPUser; /數(shù)據(jù)庫密碼JSPUser。Connection conDB=DriverManager.getConnection(m_url,m_user,m_password);建立Statement對象Statement st=conDB.createStatement();執(zhí)行查詢動作,并將查詢結果以Resultset對象返回。Resultset rs = st.executeQuery(select * from banjizhuce);取得字段數(shù)據(jù)。使用ResultSet類的get方法,可以從ResultSet對象中,取得當前記錄中各個字段的數(shù)據(jù)。利用while取得記錄集中的所有記錄。在程序中執(zhí)行數(shù)據(jù)庫查詢動作所得到 的查詢結果,相當于在程序中建立了一個虛擬數(shù)據(jù)工作表,既記錄集。當需要從這個虛擬數(shù)據(jù)工作表中取得記錄時,必須先將記錄指針移到該記錄上,然后利用ResultSet對象的get方法取得。此時必須利用ResultSet . next()方法,配合while循環(huán)移動記錄指針,逐條將數(shù)據(jù)從記錄中取出。當next()方法將指針移動到最后一條之后時,返回false值。while (rs.next() 關閉數(shù)據(jù)對象和鏈接對象public void jspDestroy()tryst.close(); conDB.close(); rs.close();catch(Exception ex) System.out.println(ex.toString();425數(shù)據(jù)庫接口JDBC驅動程序連接數(shù)據(jù)庫是通過表4-5中的接口來完成的。所有的驅動程序提供java.sql.*的實現(xiàn)表4-5 JDBC驅動程序接口接口名稱功能描述Java.sql.Driver提供各種方法,用于讀取數(shù)據(jù)庫驅動器的信息。提供connect()方法。Java.sql.DriverManager主要用來管理Driver對象連接數(shù)據(jù)庫。Java.sql.Connection創(chuàng)建Statement對象。Java.sql.Statement對特定的數(shù)據(jù)庫執(zhí)行SQL語句。Java.sql.ResultSet控制一個特定語句的行數(shù)據(jù)的存取。第5章 總結經過三個多月的調查、學習、研究和設計,系統(tǒng)的制作接近了尾聲。在這里我將系統(tǒng)設計做如下總結。1)本系統(tǒng)的功能已經達到設計的要求。系統(tǒng)中各個模塊的功能均已實現(xiàn),為整體系統(tǒng)的構建奠定了基礎。2)系統(tǒng)模塊的功能可以被進一步擴展。例如,系統(tǒng)中還可以增加個人名片夾等類似的功能。系統(tǒng)的頁面可以設計的更加精美。3)系統(tǒng)中模塊劃分明確,模塊功能設計有較強的針對性。4)系統(tǒng)的設計遵循軟件開發(fā)的全過程,使我對軟件系統(tǒng)的開發(fā)過程有了更深刻的認識。5)設計體現(xiàn)出了所使用的編程技術的優(yōu)點,設計中結合了JavaBean。6)在系統(tǒng)的設計中能夠靈活運用JSP的對象技術,并且使用有效的SQL語言操作后臺數(shù)據(jù)庫。軟件的設計沒有完美無缺的,這個系統(tǒng)在某些地方可能存在不足,還需要我們進一步的改進和完善。在這段時間里,我獲益非淺,不僅將所學的知識運用到實踐,而且更進一步學習了軟件開發(fā)技術,增強了JSP開發(fā)技術的語法基礎,能夠將其比較靈活地使用。以下是我個人制作中得出的一點見解如果查詢語句中有多個Select且嵌套,如 public String
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國近現(xiàn)代史的民族問題試題及答案
- 2025年工程法規(guī)考試常識與技巧分享試題及答案
- 企業(yè)內部審計的出發(fā)點試題及答案
- 會計實務考試講義試題及答案總結
- 農業(yè)產業(yè)化龍頭企業(yè)在2025年產業(yè)協(xié)同創(chuàng)新與帶動效應研究報告
- 2025年審核技巧法規(guī)試題及答案
- 財務管理的組織績效評估方法試題及答案
- 2025年中級會計實務考試課程安排與試題及答案
- 2025年工程法規(guī)考試的復習心得試題及答案
- 應試準備2025年工程法規(guī)考試試題及答案
- 國標美標德標日表法蘭尺寸標準
- 測繪生產困難類別細則及工日定額
- 國民經濟行業(yè)分類2022年
- 獸醫(yī)藥理學 第15章 特效解毒藥
- 空乘人員職業(yè)形象設計與化妝(169張課件)
- 會計工作年限證明個人承諾書
- 物業(yè)公共秩序管理課件
- 淺談摩托艇的安全管理
- 女性功能治療方案ppt課件
- 公路工程計量與計價考試B本科
- 醫(yī)用耗材分類目錄 (低值 ╱ 高值)
評論
0/150
提交評論