版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 第1章 緒論</b></p><p><b> 1.1 引言</b></p><p> Internet已經(jīng)成為人們生活、工作、學(xué)習(xí)越來越離不開的平臺(tái)。Web技術(shù)已經(jīng)不在局限于單純地提供信息服務(wù),而是日益成為一個(gè)操作平臺(tái),為用戶提供強(qiáng)大的服務(wù)功能。例如網(wǎng)上電子商務(wù)、社會(huì)信息數(shù)據(jù)庫(kù)等。網(wǎng)絡(luò)實(shí)現(xiàn)了遠(yuǎn)程通訊,人們能夠通
2、過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行電子郵件的發(fā)送,召開網(wǎng)絡(luò)會(huì)議,網(wǎng)上購(gòu)物,甚至坐在家里就可以上大學(xué)(網(wǎng)上教育)。網(wǎng)絡(luò)有巨大的潛力待我們?nèi)ラ_發(fā)與探索。因此,基于B/S體系架構(gòu)創(chuàng)建這個(gè)校友網(wǎng)站,緊跟行業(yè)發(fā)展,滿足人們生活、學(xué)習(xí)的需要。</p><p> 建立一個(gè)基于B/S架構(gòu)的校友錄,實(shí)現(xiàn)信息網(wǎng)絡(luò)化。通過較豐富的功能將 Web的技術(shù)特點(diǎn)體現(xiàn)出來。該系統(tǒng)可供包括在校、離校、以及游客登錄使用。登錄者可以查詢信息或者發(fā)布信息,也可以通過此
3、網(wǎng)站與朋友聯(lián)系,并且還能夠創(chuàng)建虛擬班級(jí)等功能。系統(tǒng)中班級(jí)管理為必不可少的模塊項(xiàng),主要是為了安全有效地存儲(chǔ)和管理登錄網(wǎng)站的用戶的信息,賦予管理員特定的權(quán)限,可以對(duì)用戶進(jìn)行分類,添加,刪除,修改等。方便網(wǎng)站的管理與維護(hù)。</p><p> 要實(shí)現(xiàn)這樣的功能,離不開后臺(tái)數(shù)據(jù)庫(kù)的支持。用戶驗(yàn)證信息,收集到的用戶點(diǎn)擊信息,分析得出的關(guān)聯(lián)規(guī)則表等大量的數(shù)據(jù)都由數(shù)據(jù)庫(kù)管理系統(tǒng)管理。本文中數(shù)據(jù)庫(kù)服務(wù)器端采用了Oracle作為后
4、臺(tái)數(shù)據(jù)庫(kù),以先進(jìn)的JDBC技術(shù)與數(shù)據(jù)庫(kù)連接,結(jié)合SQL語(yǔ)句處理對(duì)用戶分類,添加,刪除,修改等操作,使Web與數(shù)據(jù)庫(kù)緊密聯(lián)系起來。</p><p> 整個(gè)個(gè)性化頁(yè)面生成系統(tǒng)主要由使用JSP技術(shù)開發(fā)實(shí)現(xiàn)個(gè)性化Web頁(yè)面生成和JS結(jié)合JavaBeans技術(shù)實(shí)現(xiàn)組件重用兩部分組成。</p><p> 整個(gè)系統(tǒng)結(jié)構(gòu)如圖1-1所示。</p><p> 圖1-1 系統(tǒng)結(jié)構(gòu)圖
5、 </p><p> 本文作者主要完成客戶端,Web服務(wù)器端應(yīng)用程序和數(shù)據(jù)庫(kù)的制作,實(shí)現(xiàn)網(wǎng)上虛擬班級(jí)的創(chuàng)建,管理員注冊(cè)/登陸、班級(jí)管理員對(duì)用戶進(jìn)行分類,添加,刪除,修改等功能。實(shí)現(xiàn)與完善整個(gè)基于B/S校友錄網(wǎng)站的組織建立和測(cè)試工作。</p><p><b> 1.2 背景</b></p><p> 1.2.1 B/S模型的優(yōu)點(diǎn)</p
6、><p> 幾乎沒有限制的客戶端訪問和極其簡(jiǎn)單化的應(yīng)用程序部署和管理是B/S模型的優(yōu)勢(shì)所在。它和C/S模型比較優(yōu)點(diǎn)極為突出。</p><p> 兩層技術(shù)模型(Two-Tier Architecture)是指客戶機(jī)直接與服務(wù)器交流,沒有其他服務(wù)介入的技術(shù)模型。對(duì)用戶量在12—100的局域網(wǎng)環(huán)境中,兩層模型的確是個(gè)不錯(cuò)的方案。由于該模型中,所有的用戶連接都是被保持的,也就是說即使在空閑狀態(tài),連
7、接依然存在。所以,用戶的并發(fā)請(qǐng)求數(shù)量有限的。為了解決這個(gè)限制,使得成千上萬的用戶可以被無顧慮地添加,我們最好選用三層模型。</p><p> B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者說是改進(jìn)的結(jié)構(gòu)。用戶界面完全通過瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成三層結(jié)構(gòu),是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。
8、B/S模型結(jié)構(gòu)圖如下所示:</p><p> 圖1-2 B/S模型結(jié)構(gòu)圖</p><p> 從上圖可見 這種結(jié)構(gòu)的一個(gè)重要的特點(diǎn)是,用戶可以完全不需要安裝客戶端軟件,當(dāng)然也不需要擔(dān)心任何軟件升級(jí)和不兼容等任何客戶端所遇到的問題。</p><p> 相比之下,B/S模型的優(yōu)點(diǎn)顯而易見,更適合這個(gè)網(wǎng)站的構(gòu)建,有利于網(wǎng)站的維護(hù)和擴(kuò)充。</p><
9、;p> 1.2.2 JSP技術(shù)發(fā)展背景</p><p> Web技術(shù)的迅猛發(fā)展正推動(dòng)Internet上信息服務(wù)類的進(jìn)步。WWW服務(wù)的基礎(chǔ)是HTML語(yǔ)言。這個(gè)系統(tǒng)模塊中用到的JSP技術(shù)是在HTML語(yǔ)言的基礎(chǔ)上使用腳本語(yǔ)言對(duì)網(wǎng)頁(yè)的對(duì)象模型進(jìn)行編程。JSP全稱JavaServerPages,它是由Sun Microsystems公司提出、許多公司參與建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。它誕生在1999年6月1日。目前
10、國(guó)內(nèi)外已經(jīng)在廣泛地使用JSP。隨著JAVA語(yǔ)言得到普及,越來越多的公司開始關(guān)注JSP的前景。</p><p> 傳統(tǒng)的動(dòng)態(tài)網(wǎng)頁(yè)制作包括CGI、ASP、JSP三種,而JSP具有明顯的優(yōu)勢(shì)。使用CGI-BINJ接口是一個(gè)最早的動(dòng)態(tài)WEB頁(yè)面問題的解決方案。缺點(diǎn),CGI程序必須從CGI接口讀入一長(zhǎng)串的字符串,再?gòu)淖址腥〉盟枰臄?shù)據(jù)并加以處理。過程十分繁瑣。另一個(gè)缺點(diǎn),除了Perl是解釋語(yǔ)言外,其他都是編譯式的語(yǔ)
11、言。每次修改后,都必須重新編譯一次,這給開發(fā)人員帶來麻煩,增加了工作量。ASP和JSP都能取代CGI使網(wǎng)站建設(shè)和發(fā)展變得簡(jiǎn)單快捷。盡管JSP技術(shù)和ASP在許多方面都有相似的,但仍然存在很多不同之處,其中最本質(zhì)上的區(qū)別在于:兩者是來源于不同的技術(shù)規(guī)范組織,其實(shí)現(xiàn)的基礎(chǔ),WEB服務(wù)器平臺(tái)要求不相同。</p><p> 1)作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫,各處運(yùn)行”的特點(diǎn)。一次寫入,之
12、后,可以運(yùn)行在任何具有符合JavaTM語(yǔ)法結(jié)構(gòu)的環(huán)境。取代之過去單一平臺(tái)開發(fā)。 </p><p> ASP主要工作環(huán)境是微軟的IIS應(yīng)用程序結(jié)構(gòu),又因Activex對(duì)象具有平臺(tái)特性,所以ASP技術(shù)不能很容易地實(shí)現(xiàn)在跨平臺(tái)的WEB服務(wù)器的工作。</p><p> 2)從開發(fā)人員的角度來看其區(qū)別在于:ASP僅支持組件對(duì)象模型COM,而JSP技術(shù)提供的組件都是基于JavabeansTM技術(shù)或
13、JSP標(biāo)簽庫(kù)。</p><p> 3)JSP標(biāo)簽可擴(kuò)充性。JSP技術(shù)能夠使用開發(fā)者擴(kuò)展JSP標(biāo)簽,JSP開發(fā)者能定制標(biāo)簽庫(kù),減少對(duì)腳本語(yǔ)言的依賴</p><p> 4)生成可重用的組件。JSP基于組件的技術(shù)方法加速了總體開發(fā)過程。 JSP組件(Javabeans,或定制的JSP標(biāo)簽)是跨平臺(tái)可重用的。Javabeans組件可以訪問數(shù)據(jù)庫(kù),并能以分布式系統(tǒng)模式工作于UNIX和WINDOW
14、S平臺(tái)。</p><p> 5)易于維護(hù)性。 基于JSP技術(shù)的應(yīng)用程序比基于ASP的應(yīng)用程序易于維護(hù)和管理。JSP突出的組件技術(shù)使修改內(nèi)容而不影響邏輯或修改邏輯而不影響內(nèi)容變得很容易實(shí)現(xiàn)。</p><p> 如上的比較不難看出,JSP技術(shù)編寫的程序運(yùn)用要更加靈活,可擴(kuò)展性更強(qiáng)。</p><p><b> 第2章 需求分析</b></
15、p><p><b> 2.1 任務(wù)描述</b></p><p> 系統(tǒng)模塊的設(shè)計(jì)應(yīng)該遵循整個(gè)系統(tǒng)總體設(shè)計(jì)思路。即基于B/S模型構(gòu)建校友錄。系統(tǒng)的總體設(shè)計(jì)應(yīng)該是提供給上網(wǎng)瀏覽者一個(gè)效率高,能容豐富的網(wǎng)絡(luò)空間。包括用戶可以在線聊天,上傳下載圖片,網(wǎng)上購(gòu)物等種種功能。</p><p> 其中校友錄中必不可少的主體模塊之一就是網(wǎng)上虛擬班級(jí)的創(chuàng)建,它將
16、提供的是一個(gè)互動(dòng)的虛擬空間。班級(jí)作為一個(gè)整體包含了許多的個(gè)體,用戶作為班級(jí)的個(gè)體可以在班級(jí)范圍能有自己的行為。與其相關(guān)涉及到班級(jí)的長(zhǎng)期維護(hù)和管理等功能。班級(jí)管理員充當(dāng)維護(hù)者這個(gè)角色,他可以將班級(jí)成員組織在一起,而且擁有班級(jí)管理功能的使用權(quán)。而針對(duì)用戶將使用到的功能和特點(diǎn),將此系統(tǒng)模塊劃分為班級(jí)注冊(cè)、管理員信息注冊(cè)、管理員權(quán)限操作(包括:班級(jí)成員的刪除、班級(jí)的刪除、更改班級(jí)名稱、添加班級(jí)管理員、班級(jí)留言等),數(shù)據(jù)庫(kù)設(shè)計(jì)等幾個(gè)子模塊。那么系
17、統(tǒng)功能的使用者應(yīng)該是班級(jí)管理員,所有的功能設(shè)計(jì)都應(yīng)該以管理員的權(quán)限為核心。此處管理員權(quán)限的功能設(shè)計(jì)定要引用到大量的數(shù)據(jù)庫(kù)操作,這就需要考慮到為虛擬班級(jí)分配系統(tǒng)存儲(chǔ)空間,建立數(shù)據(jù)庫(kù)表。那么,選擇數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)用戶和表,建立與數(shù)據(jù)庫(kù)的連接,使用SQL語(yǔ)言操作數(shù)據(jù)庫(kù)就是系統(tǒng)后臺(tái)設(shè)計(jì)圍繞的主體。能否將系統(tǒng)的前后臺(tái)合理有效的關(guān)聯(lián)是整體系統(tǒng)模塊成功的關(guān)鍵。</p><p><b> 2.2 用戶特點(diǎn)</
18、b></p><p> 系統(tǒng)應(yīng)該圍繞著用戶特點(diǎn)設(shè)計(jì)。管理員有權(quán)將普通班級(jí)成員升級(jí)為班級(jí)管理員,協(xié)調(diào)日常工作。有權(quán)將班級(jí)管理員降級(jí)為普通班級(jí)成員,將違反網(wǎng)站用戶協(xié)議的,對(duì)班級(jí)造成不良影響的普通班級(jí)成員從本班級(jí)中除名。有權(quán)將班級(jí)的名稱進(jìn)行合理更改,使其更容易查詢。有義務(wù)定期維護(hù)班級(jí)校友錄,發(fā)展班級(jí)成員,使舊時(shí)的班級(jí)重新成為一個(gè)整體。以便參加網(wǎng)站為校友們不定期舉辦的豐富多彩的活動(dòng),發(fā)布班級(jí)通知等。遵守網(wǎng)站用戶協(xié)
19、議,管理班級(jí)成員不傳播任何非法的、傷害性的、淫穢等信息資料。有義務(wù)作為班級(jí)成員與網(wǎng)站之間的溝通紐帶,及時(shí)將雙方所需的信息進(jìn)行溝通??梢詫⒆约旱乃袡?quán)利移交給另一位班級(jí)成員。</p><p><b> 2.3 條件與限制</b></p><p> 此系統(tǒng)模塊的設(shè)計(jì)主要突出班級(jí)管理員的功能和特點(diǎn),它與普通的用戶有很大的區(qū)別。系統(tǒng)雖然對(duì)所有用戶開放,但部分資料和功能只針
20、對(duì)班級(jí)管理員開放;新增用戶需要通過申請(qǐng)、注冊(cè)等方式獲得希望得到的權(quán)限和信息;如果不遵守網(wǎng)站用戶協(xié)議,或傳播任何非法的、淫穢等信息資料,將立即取消用戶服務(wù)帳號(hào),并視情節(jié)的嚴(yán)重性付諸于法律。數(shù)據(jù)庫(kù)中要以班級(jí)名稱和用戶名為主鍵,這就要求用戶創(chuàng)建初始信息是必須填寫這兩項(xiàng)。為了確保用戶輸入數(shù)據(jù)的有效性并與數(shù)據(jù)庫(kù)字段設(shè)計(jì)相符,所以對(duì)用戶輸入的表單項(xiàng)也要做相應(yīng)的約束。</p><p><b> 2.4 系統(tǒng)配置&l
21、t;/b></p><p> 2.4.1 Hardware (硬件)</p><p> 硬件環(huán)境(訪問者):建議用戶在力所能及的情況下采用較高配置的硬件資源。</p><p> 硬件環(huán)境(開發(fā)者):pentiumIII處理器,256M內(nèi)存,10G磁盤空間。</p><p> 2.4.2 Software (軟件)</p&g
22、t;<p> 訪問者:IE、Netscape等瀏覽器。最好是IE瀏覽器,本網(wǎng)頁(yè)在IE瀏覽器下通過了測(cè)試。</p><p><b> 開發(fā)者:</b></p><p> 1)Operating System (操作系統(tǒng)):Windows2000/NT/XP</p><p> 2)Tools (工具):EditPlus 2,
23、DreamweaverMX</p><p> 3)Database (數(shù)據(jù)庫(kù)):Oracle8i</p><p> 4) Server (服務(wù)器) :ApacheTomcat/WebSphere</p><p> 5)Run Circumstance (運(yùn)行環(huán)境) :安裝JDK1.4支持Java運(yùn)行。</p><p> 6)Techn
24、ic (技術(shù)):前臺(tái)網(wǎng)頁(yè)的設(shè)計(jì)采用JSP技術(shù)制作。JSP網(wǎng)頁(yè)吸引人的地方之一就是能結(jié)合JavaBeans技術(shù)來擴(kuò)充網(wǎng)頁(yè)中程序的功能。JSP程序?qū)嶋H上JSP元素、Java程序和HTML文檔的混合體,JSP以Java作為其腳本語(yǔ)言,幾乎繼承了Java語(yǔ)言的所有特點(diǎn)。</p><p><b> 2.5 編碼規(guī)范</b></p><p> 文件名用英文表示其功能,起到一
25、目了然的作用。</p><p> 文件歸類,以不同文件夾存放</p><p> 圖片——Lifeng\Image</p><p> JSP ——Lifeng\JSP</p><p> JavaBean——WEB-INF\classes\lifeng\works</p><p> 出錯(cuò)信息頁(yè)的制作。用戶操作錯(cuò)誤
26、時(shí),返回出錯(cuò)信息。</p><p><b> 第3章 系統(tǒng)設(shè)計(jì)</b></p><p><b> 3.1 模塊劃分</b></p><p> 此系統(tǒng)模塊要的功能是創(chuàng)建班級(jí)和班級(jí)管理員操作權(quán)限的實(shí)現(xiàn),圍繞著這個(gè)目標(biāo)把系統(tǒng)制作劃分為登錄子模塊、創(chuàng)建班級(jí)子模塊、管理員權(quán)限子模塊和數(shù)據(jù)庫(kù)模塊。如圖3-1所示。首頁(yè)可以作為其它
27、功能項(xiàng)的一個(gè)向?qū)?,起連接的作用,而管理員權(quán)限子模塊又被細(xì)分為刪除功能子模塊、查詢功能子模塊、管理員班級(jí)留言功能塊。</p><p> 圖3-1 模塊劃分結(jié)構(gòu)圖 </p><p> 登錄子模塊和創(chuàng)建班級(jí)子模塊在系統(tǒng)中的實(shí)現(xiàn)其功能對(duì)所有用戶可見,而刪除、查詢、管理員班級(jí)留言功能只針對(duì)身份被標(biāo)識(shí)為管理員的用戶開放。</p><p><b> 3.2 設(shè)計(jì)模
28、式</b></p><p> 模塊1:用戶身份驗(yàn)證設(shè)計(jì)。用戶進(jìn)入該系統(tǒng),首先需要進(jìn)行身份驗(yàn)證。如果通過了身份驗(yàn)證,則為合法用戶,同時(shí)其帳號(hào)和權(quán)限等資料將會(huì)保存在Session對(duì)象,Session對(duì)象儲(chǔ)存的信息是局部的,隨用戶不同而不同的。當(dāng)用戶訪問系統(tǒng)的各個(gè)子系統(tǒng)時(shí),系統(tǒng)自動(dòng)從Session對(duì)象中獲取用戶的資料,而無須將用戶的資料作為請(qǐng)求方法、參數(shù)名、參數(shù)值追加到URL中。這樣可以避免用戶惡意修改U
29、RL中的值來非法訪問。</p><p> Session對(duì)象中的變量設(shè)置:</p><p> Session[“UserID”] 用戶帳號(hào) </p><p> Session[“Roles”] 用戶權(quán)限 </p><p> 模塊設(shè)計(jì)流程如圖3-2所示?! ?lt;/p><p><b&g
30、t; 是否</b></p><p> 圖3-2 登錄驗(yàn)證流程圖 </p><p> 用戶登錄這個(gè)過程是必須的,因?yàn)橹挥羞@樣才能從數(shù)據(jù)庫(kù)中得到用戶的帳號(hào)和權(quán)限。</p><p> 模塊2:創(chuàng)建班級(jí)功能的設(shè)計(jì)。通過了注冊(cè)后的用戶才可以創(chuàng)建新班。用戶創(chuàng)建時(shí)必須輸入合法的班級(jí)名稱和基本信息,班級(jí)名被設(shè)定為數(shù)據(jù)庫(kù)Class_table的主鍵,系統(tǒng)將判斷新
31、班級(jí)的名稱是否與數(shù)據(jù)庫(kù)中現(xiàn)有的記錄重復(fù),如果重復(fù)就違反了主鍵唯一的原則,數(shù)據(jù)將不能夠被正確的輸入數(shù)據(jù)庫(kù),所以要返回給用戶一個(gè)信息。否則,班級(jí)創(chuàng)建成功,創(chuàng)建者還需要補(bǔ)充用戶信息。</p><p> 此模塊的設(shè)計(jì)流程如圖3-3所示。</p><p><b> 是否</b></p><p><b> 是</b></
32、p><p><b> 否</b></p><p><b> 是</b></p><p> 圖3-3 創(chuàng)建班級(jí)流程圖 </p><p> 模塊3:查詢功能設(shè)計(jì)。提供給用戶查詢功能,方便使用者查找親友同學(xué)所屬哪個(gè)班級(jí),還可以統(tǒng)計(jì)出目前班級(jí)擁有多少成員。此項(xiàng)功能是根據(jù)使用者輸入的關(guān)鍵字遍歷數(shù)據(jù)庫(kù),查找
33、有無匹配的記錄。如果記錄存在將記錄輸出到用戶瀏覽端,否則返回一條用戶信息。例如,查詢姓名為‘李四’的人。</p><p> 模塊設(shè)計(jì)流程如圖 3-4所示。</p><p> 接口(否) 接口(是)</p><p> ,計(jì)算機(jī)范文網(wǎng) www.jsjfw.net,</p><p> 圖3-4 查詢功能流程圖 </p>
34、<p> 模塊4:刪除功能設(shè)計(jì)。作為班級(jí)管理員應(yīng)該有管理班級(jí)的能力,刪除功能的設(shè)計(jì)正是為班級(jí)管理員設(shè)置的管理功能之一。其中包括兩部分,一是刪除班級(jí)成員,二是刪除整個(gè)班級(jí)。這個(gè)功能的實(shí)現(xiàn)需要使用SQL語(yǔ)言判斷管理員所在的班級(jí),遍歷數(shù)據(jù)庫(kù)中有無使用者欲刪除的記錄。如果記錄存在,將記錄刪除。否則,返回信息到用戶瀏覽端。例如把姓名為‘李四’的人刪除或刪除班級(jí)‘計(jì)算機(jī)一班’。</p><p> 模塊設(shè)計(jì)流程如
35、圖3-5所示。</p><p> 接口(否) 接口(是)</p><p> 圖3-5 刪除功能流程圖 </p><p> 3.3 數(shù)據(jù)庫(kù)安全及設(shè)計(jì)描述</p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)無疑是以上功能實(shí)現(xiàn)的基礎(chǔ)。制作數(shù)據(jù)庫(kù)表首先要確定實(shí)體的屬性和實(shí)體間的關(guān)系。數(shù)據(jù)庫(kù)要存儲(chǔ)所有的班級(jí)信息和用戶信息,這些信息是班級(jí)的屬性和用戶的屬性。一個(gè)班
36、級(jí)可以有若干的成員,也可以有一個(gè)以上的管理員。一個(gè)管理員只屬于一個(gè)班級(jí)。</p><p> 實(shí)體間關(guān)系如圖3-6所示。</p><p><b> 圖3-6 E-R圖</b></p><p> 角色設(shè)計(jì)初步將系統(tǒng)中的用戶角色分成三級(jí),如表3-1所示 。</p><p><b> 表3-1 角色劃分<
37、/b></p><p> 權(quán)限設(shè)置使不同用戶對(duì)不同模塊有不同的操作權(quán)限。如表3-2所示。</p><p><b> 表3-2 權(quán)限設(shè)置</b></p><p> 學(xué)校名稱錄入用于錄入班級(jí)的名稱、類型,并自動(dòng)生成唯一的ID號(hào)。ID號(hào)為長(zhǎng)整型數(shù)字類型。 ID將根據(jù)班級(jí)錄入的順序,自動(dòng)從1遞加上去。</p><p>
38、;<b> 3.4頁(yè)面設(shè)計(jì)</b></p><p> 客戶端頁(yè)面是用戶和服務(wù)器之間實(shí)現(xiàn)人機(jī)交互的一個(gè)介質(zhì)。對(duì)它的制作要求簡(jiǎn)潔大方,色彩搭配要協(xié)調(diào)。</p><p><b> 第4章 系統(tǒng)實(shí)現(xiàn)</b></p><p> 4.1模塊的詳細(xì)設(shè)計(jì)</p><p> 4.1.1 登錄機(jī)制</p
39、><p> 網(wǎng)頁(yè)中建立用戶登錄機(jī)制,為的是限制未經(jīng)過登錄的瀏覽者不能創(chuàng)建班級(jí)。讓用戶以帳號(hào)方式登錄網(wǎng)頁(yè)是一種可行的網(wǎng)頁(yè)管理方法。在這個(gè)系統(tǒng)模塊的后臺(tái)數(shù)據(jù)庫(kù)中建立USER_TABLE表,用來對(duì)用戶的登錄帳號(hào)和密碼加以保存。此處設(shè)置了用戶對(duì)象的session值。通過獲取session值,遍歷數(shù)據(jù)庫(kù),可以確定用戶屬于哪個(gè)班級(jí)和用戶在班級(jí)中的身份。結(jié)構(gòu)圖如 4-1所示。</p><p><b&
40、gt; 圖4-1 登錄機(jī)制</b></p><p> 表4-1是這個(gè)模塊的實(shí)現(xiàn)文件。</p><p><b> 表4-1 實(shí)現(xiàn)文件</b></p><p> 用戶若成功登錄,將把登錄的帳號(hào)和密碼寫入session對(duì)象。Session.setPutValue(“userName”,userName); Session.setP
41、utValue(“userPassword”,Password);</p><p> 4.1.2 創(chuàng)建班級(jí)</p><p> 班級(jí)創(chuàng)建是這個(gè)系統(tǒng)模塊的核心功能之一。系統(tǒng)通過在數(shù)據(jù)庫(kù)中遍歷用戶輸入的班級(jí)名來判斷班級(jí)的建立是否有效。使用腳本語(yǔ)言限制表單內(nèi)的輸入方式,如果表單值為空,在用戶端輸出“班級(jí)名不能為空”。如下圖所示;</p><p> 圖4-2 創(chuàng)建班級(jí)頁(yè)
42、</p><p> 為了保證不重復(fù)創(chuàng)建班級(jí),同時(shí)也防止數(shù)據(jù)庫(kù)沖突,在得到request.getParameter(“class_name”)時(shí)必須對(duì)數(shù)據(jù)庫(kù)遍歷。如果班級(jí)名已經(jīng)存在,返回信息“班級(jí)已經(jīng)存在”。此處將bean文件引入,做數(shù)據(jù)庫(kù)的連接工作,通過Insert語(yǔ)句把班級(jí)的屬性插入到數(shù)據(jù)庫(kù)中。</p><p> <%@ page contentType="text/
43、html;charset=gb2312"%></p><p> <%@ page import="java.sql.*"%></p><p> <jsp:useBean id="RegisterBean" scope="page" class="lifeng.works.linkDB
44、 " /></p><p> SQL條件查詢語(yǔ)句檢查表單中輸入的班級(jí)信息是否與數(shù)據(jù)庫(kù)中重復(fù)。</p><p> String sql="select * from CLASS_TABLE where class_name='" + name1 + "'";</p><p> ResultS
45、et rs = RegisterBean.executeQuery(sql);</p><p> 如果用戶輸入的班級(jí)名稱在數(shù)據(jù)庫(kù)中已存在,那么返回到register.jsp頁(yè),得到session值。</p><p> if(搜索到相同記錄) </p><p><b> { </b></p><p><b&
46、gt; 關(guān)閉數(shù)據(jù)庫(kù);</b></p><p> session.putValue("register_message","班級(jí)已存在!");//設(shè)置返回信息。</p><p> 從新導(dǎo)回到創(chuàng)建頁(yè)面<% </p><p><b> } else</b></p><
47、;p><b> { </b></p><p> 創(chuàng)建成功,記錄存入數(shù)據(jù)庫(kù);</p><p><b> } </b></p><p> 此處從表單中取出客戶端的輸入值必須被轉(zhuǎn)換成與數(shù)據(jù)庫(kù)中字段類型相一致的類型,否則不能夠?qū)⒊隹蛻舳说妮斎胫嫡_存入數(shù)據(jù)庫(kù)。此子模塊使用的文件如下表所示。</p>&l
48、t;p><b> 表4-2 實(shí)現(xiàn)文件</b></p><p> 4.1.3 班級(jí)管理員的生成</p><p> 班級(jí)管理員這個(gè)角色起到對(duì)班級(jí)日常工作的維護(hù)和管理的作用,角色權(quán)限高于普通的班級(jí)成員,那么需要特定的屬性來標(biāo)識(shí)管理員的身份。系統(tǒng)表中增加Admi字段,若為管理員此列不為空,否則此列為空。從圖4-3可以看出ADMI列不為空的都是班級(jí)管理員。</
49、p><p> 圖4-3 user_table表結(jié)構(gòu)</p><p> 班級(jí)管理員也屬于這個(gè)班級(jí)的一個(gè)成員,將他們存放在一個(gè)表中可以節(jié)省系統(tǒng)表空間,減少數(shù)據(jù)冗余和表之間復(fù)雜的關(guān)聯(lián)。首位班級(jí)的創(chuàng)建者被系統(tǒng)默認(rèn)成為該班級(jí)的管理員,他的session值被保留,班級(jí)建立成功的同時(shí)把他的登錄名存入class_table表的Admi字段中。</p><p> 4.1.4 刪除功
50、能的實(shí)現(xiàn)</p><p> 主要技術(shù)環(huán)節(jié)是如何有效地與數(shù)據(jù)庫(kù)連接,并通過使用SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。刪除班級(jí)成員和班級(jí)是管理員權(quán)限的一項(xiàng)重要功能。設(shè)計(jì)的實(shí)施如下所述。</p><p> 從表單中取得字符串,然后查詢數(shù)據(jù)庫(kù)有無與其相等的記錄。如果有,按下刪除鍵可以將其刪除,如果記錄不存在,返回用戶信息,并可以繼續(xù)重新操作。具體流程:if(表單為空)</p><p&
51、gt;<b> { </b></p><p> 輸出班級(jí)成員數(shù)據(jù)庫(kù)表</p><p> }else(不為空)</p><p><b> { </b></p><p> 查詢數(shù)據(jù)庫(kù)中有無匹配的記錄</p><p> String strSQL="sele
52、ct * from individual where zm='"+new String(zm.getBytes("8859_1"))+"'";</p><p> rs=st.executeQuery(strSQL);</p><p><b> 輸出結(jié)果集</b></p><p&g
53、t; if(!rs.next())//遍歷到數(shù)據(jù)庫(kù)末沒有匹配記錄</p><p><b> { </b></p><p> 返回給用戶信息:沒找到“” </p><p><b> }</b></p><p> else(記錄存在)</p><p><b>
54、; { </b></p><p> 執(zhí)行刪除,并刷新數(shù)據(jù)庫(kù)。</p><p> String strDel="delete from individual where zm='"+new String(zm.getBytes("8859_1"))+"'";</p><p>
55、; st.executeUpdate(strDel);</p><p> rs=st.executeQuery("select * from individual");</p><p> }//刪除后更新數(shù)據(jù)庫(kù);查詢語(yǔ)句的執(zhí)行</p><p> 繼續(xù)操作:<A href=delete3.jsp>繼續(xù)刪除</A>&l
56、t;/p><p> //自身連接,刷新后返回到自身。</p><p><b> }</b></p><p><b> 關(guān)閉數(shù)據(jù)庫(kù)。</b></p><p> 刪除班級(jí)是判斷管理員屬與那個(gè)班級(jí),通過user_table表中class_name屬性和class_table表中class_name屬性
57、把兩個(gè)表關(guān)聯(lián)起來。這樣班級(jí)管理員就只能刪除與他班級(jí)屬性相同的班級(jí)名和班級(jí)成員了。</p><p> 此處從表單中取出客戶端的輸入值必須被轉(zhuǎn)換成與數(shù)據(jù)庫(kù)中字段類型相匹配的類型,否則不能夠正確的進(jìn)行數(shù)據(jù)庫(kù)遍歷。</p><p><b> 圖4-4 刪除頁(yè)</b></p><p> 4.1.5 查詢功能的實(shí)現(xiàn)</p><p&
58、gt; 主要技術(shù)環(huán)節(jié)是如何有效地與數(shù)據(jù)庫(kù)連接,并通過使用SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。如果用戶想要查找某人的信息或者想尋找某個(gè)班級(jí)中是否存在某人,那么這項(xiàng)功能正好滿足使用者的需要。設(shè)計(jì)思路是從表單中提取用戶輸入的字符,連接并查詢數(shù)據(jù)庫(kù),如果查找到數(shù)據(jù)庫(kù)中存在相匹配的記錄,將其記錄輸出,否則返回一條用戶信息“不存在”。</p><p> 具體流程:if(表單為空)</p><p><
59、b> { </b></p><p><b> 查詢數(shù)據(jù)庫(kù)表</b></p><p> }else(不為空)</p><p><b> { </b></p><p> 查詢數(shù)據(jù)庫(kù)中有無匹配的記錄</p><p> String strSQL=&qu
60、ot;select * from individual where zm='"+new String(zm.getBytes("8859_1"))+"'";</p><p> rs=st.executeQuery(strSQL);</p><p> if(!rs.next())//遍歷到數(shù)據(jù)庫(kù)末沒有匹配記錄</p&
61、gt;<p><b> { </b></p><p> 返回給用戶信息:沒找到“” </p><p><b> }</b></p><p> else(記錄存在)</p><p><b> { </b></p><p> 執(zhí)行
62、查詢語(yǔ)句,并刷新數(shù)據(jù)庫(kù)。</p><p> strSQL="select * from individual where zm='"+new String(zm.getBytes("8859_1"))+"'";</p><p> ResultSet rs10 = st.executeQuery(strSQL);
63、//輸出結(jié)果集。</p><p><b> }</b></p><p> 繼續(xù)操作:<A href=query.jsp>繼續(xù)查找</A></p><p> //自身連接,刷新后返回到自身。</p><p><b> } 關(guān)閉數(shù)據(jù)庫(kù)。</b></p>&l
64、t;p> 4.1.6 留言功能的實(shí)現(xiàn)</p><p> 此模塊中通過獲取管理員的session值來確定數(shù)據(jù)庫(kù)操作的對(duì)象。班級(jí)管理員可以使用這個(gè)功能在本班能留言。</p><p><b> 具體實(shí)現(xiàn):</b></p><p> <%@ page contentType="text/html;charset=gb231
65、2"%></p><p> <%@ page import="java.sql.*"%></p><p> <%@ page import="java.io.*"%></p><p><b> <%</b></p><p><
66、;b> 連接數(shù)據(jù)庫(kù)對(duì)象;</b></p><p> String user_name2=(String)session.getValue("username");</p><p> //取得管理員的session值;</p><p> String Mytear= new </p><p> S
67、tring(request.getParameter("MyTeAr").getBytes("8859_1"));</p><p><b> //獲取表單值;</b></p><p> st.executeUpdate("update user_table set talk='"+Mytear+&
68、quot;' where user_name='"+user_name2+"'");</p><p> //將獲得的表單信息存儲(chǔ)到與session值對(duì)應(yīng)的數(shù)據(jù)庫(kù)記錄中,獲取數(shù)據(jù)庫(kù)中user_name等于session值的留言記錄值;</p><p> 將結(jié)果集輸出到客戶端。</p><p><b>
69、 %></b></p><p> 此系統(tǒng)模塊使用的文件如表4-3所示。</p><p><b> 表4-3 實(shí)現(xiàn)文件</b></p><p> 4.1.7用戶權(quán)限確認(rèn)</p><p> 當(dāng)用戶點(diǎn)擊進(jìn)入一個(gè)班級(jí)時(shí),他是普通成員還是管理員,他應(yīng)該有哪些操作權(quán)限,此時(shí)識(shí)別用戶身份具有非常重要的意義,
70、只有認(rèn)清用戶的身份之后才能確定該用戶能夠執(zhí)行哪些操作。這也是本系統(tǒng)模塊設(shè)計(jì)的重要環(huán)節(jié)之一。功能實(shí)現(xiàn)使用了數(shù)據(jù)庫(kù)表關(guān)聯(lián)操作。首先取得用戶Session值,然后執(zhí)行如下語(yǔ)句:</p><p> ResultSet rs=st.executeQuery("select class_table.class_name from class_table,user_table where</p>&l
71、t;p> class_table.class_name='"+class_name+"'and class_table.admi=user_table.user_name");</p><p> 通過圖4-5和圖4-6的比較可以看到同一個(gè)用戶以不同身份進(jìn)入兩個(gè)班級(jí)時(shí),頁(yè)面的效果是不同的。被標(biāo)識(shí)為管理員者才有使用刪除、留言等功能的特權(quán)。</p>
72、<p> 圖4-5 管理員登錄</p><p><b> 圖4-6 普通成員</b></p><p> 4.1.8 JSP對(duì)象的使用</p><p> 此系統(tǒng)實(shí)現(xiàn)多處使用了JSP的對(duì)象,如表4-4。</p><p> 表4-4 jsp對(duì)象</p><p> 4.1.9 技術(shù)要
73、點(diǎn)</p><p><b> 1)引用bean</b></p><p> 各功能模塊中需要頻繁的進(jìn)行數(shù)據(jù)庫(kù)操作,如果每遇到要使用數(shù)據(jù)庫(kù)便建立一次鏈接將在一定程度上增大系統(tǒng)開銷,加大程序員的工作量,我們這里有效利用了JavaBean文件,使服務(wù)器事先建立數(shù)據(jù)庫(kù)鏈接對(duì)象,所有的數(shù)據(jù)操作都使用該鏈接,從而提高了服務(wù)器效率。具體做法以下將做描述。</p>&
74、lt;p><b> 2)操作數(shù)據(jù)庫(kù)</b></p><p> 表空間是數(shù)據(jù)庫(kù)得邏輯存儲(chǔ)設(shè)備,它把數(shù)據(jù)庫(kù)信息組織成物理存儲(chǔ)空間。每一個(gè)數(shù)據(jù)庫(kù)用戶都可以設(shè)置一個(gè)缺省空間。缺省表空間用于在用戶創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象時(shí)(表或索引),如果沒有指定表空間時(shí)存放數(shù)據(jù)庫(kù)對(duì)象。創(chuàng)建用戶時(shí),如果不加指定,用戶的缺省表空間為SYSTEM表空間。JSP與數(shù)據(jù)庫(kù)連接的時(shí)候,需要使用一個(gè)合法的用戶登錄數(shù)據(jù)庫(kù)。此系統(tǒng)模
75、塊在數(shù)據(jù)庫(kù)</p><p> 中建立用戶名為JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用戶JSPUSER權(quán)限。密碼為JSPUSER。</p><p> 一個(gè)訪問數(shù)據(jù)庫(kù)的程序段,對(duì)于不同的行為,要其執(zhí)行的SQL語(yǔ)句是不同的,其不同主要
76、表現(xiàn)在查詢、插入或更新時(shí)的參數(shù)不同,于是我們引用JAVA類:</p><p> <%@page import= java.sql.*%> 將數(shù)據(jù)庫(kù)的查詢、更新方法定義在Bean中。</p><p> 在系統(tǒng)模塊中通過設(shè)置session值來確定應(yīng)該操作數(shù)據(jù)庫(kù)中的哪條記錄,而且通過兩個(gè)表之間相同字段的關(guān)聯(lián)提高操作效率。</p><p> 4.1.10
77、Bean的使用</p><p> JavaBean的價(jià)值體現(xiàn)在它的一系列屬性里,使用這些屬性可以訪問JavaBean的設(shè)置。用一個(gè)人來做類比,如果這個(gè)人是一個(gè)JavaBean,那么他的姓名、身份證號(hào)碼和地址就是這些屬性。JavaBean已經(jīng)做好了,你要做的事就是告訴JSP頁(yè)面它將要使用的bean的名稱,這可以通過<jsp:useBean>標(biāo)記來實(shí)現(xiàn): <jsp:useBean id="
78、;localName" class=" lifeng.works.linkDB "" scope="application" />。 </p><p> 在這個(gè)系統(tǒng)模塊的設(shè)計(jì)過程中,把連接數(shù)據(jù)庫(kù)時(shí)需要多次復(fù)用連接驅(qū)動(dòng)命令,數(shù)據(jù)庫(kù)操作的方法引入Bean中。實(shí)踐中真正體現(xiàn)了JSP與Bean結(jié)合的優(yōu)勢(shì)。Bean中定義了查詢(executeQuery),
79、更新方法(executeUpdate)。當(dāng)JSP中執(zhí)行SQL語(yǔ)言操作數(shù)據(jù)庫(kù)時(shí),將自動(dòng)調(diào)用這兩個(gè)方法。</p><p> 4.2 數(shù)據(jù)庫(kù)的詳細(xì)設(shè)計(jì)</p><p> 4.2.1安裝驅(qū)動(dòng)程序</p><p> 本系統(tǒng)模塊用JSP技術(shù)編寫,那么就必須借助與JDBC(Java DataBase Connectivity)來操作數(shù)據(jù)庫(kù)。JDBC是一組API(Applic
80、ation Programming Interface),即應(yīng)用程序設(shè)計(jì)接口。JDBC共有四種類型:</p><p> 類型一,利用橋連接器(Bridge)的概念連接數(shù)據(jù)庫(kù)。類型二,運(yùn)用由數(shù)據(jù)庫(kù)廠商提供的用于操作數(shù)據(jù)庫(kù)的API函數(shù)。類型三,這類驅(qū)動(dòng)程序通過網(wǎng)絡(luò)協(xié)議與中間件連通,中間件負(fù)責(zé)轉(zhuǎn)換數(shù)據(jù)庫(kù)操作信息。類型四,這類驅(qū)動(dòng)不通過任何中間件,而直接以Java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序來執(zhí)行數(shù)據(jù)庫(kù)的訪問。</p>
81、<p> 相比之下,此系統(tǒng)選擇第三種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)。它的優(yōu)點(diǎn)更適合這個(gè)系統(tǒng)創(chuàng)建與數(shù)據(jù)庫(kù)的連接。</p><p> Oracle自帶的JDBC驅(qū)動(dòng)程序放在Oracle安裝目錄\Oracle81\jdbc\lib中。Java環(huán)境并不能自動(dòng)找到該驅(qū)動(dòng)程序。應(yīng)用時(shí)可以在AUTOEXEC.BAT中設(shè)置如下:</p><p> set classpath=c:\oracle\ora
82、81\jdbc\lib\classes111.zip;c:\oracle\ora81\jdbc\lib\classes12.zip;或者把驅(qū)動(dòng)程序壓縮包復(fù)制到Apache Tomcat服務(wù)器下的class目錄中。</p><p><b> 4.2.2建立用戶</b></p><p> JSP與數(shù)據(jù)庫(kù)連接的時(shí)候,需要使用一個(gè)合法的用戶登錄數(shù)據(jù)庫(kù)。此系統(tǒng)模塊在數(shù)據(jù)庫(kù)&
83、lt;/p><p> 中建立用戶名為JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用戶JSPUSER權(quán)限。密碼為JSPUSER。</p><p> 用戶的缺省表空間為SYSTEM表空間。</p><p> 4.2.
84、3 系統(tǒng)表結(jié)構(gòu)</p><p> 本系統(tǒng)模塊建立兩個(gè)數(shù)據(jù)庫(kù)基本表。表CLASS_TABLE存放用戶創(chuàng)建班級(jí)時(shí)輸入的基本信息。包括字段:、學(xué)校、班級(jí)名稱、年級(jí)、Admi(管理員);表中字段class_name,class_year,Admi,設(shè)class_name為主鍵。表USER_TABLE存放管理員的注冊(cè)信息。包括字段:用戶登錄名、真實(shí)姓名、生日、工作單位、工作地、Email,Tel,Admi。如圖4-7、4
85、-8所示</p><p> 圖4-7 user_table表結(jié)構(gòu)</p><p> 圖4-8 class_table表結(jié)構(gòu)</p><p> 考慮到節(jié)省表空間,防止數(shù)據(jù)冗余和表之間關(guān)聯(lián)過于復(fù)雜,決定將所有的班級(jí)成員存放在一張表中,用字段ADMI標(biāo)識(shí)管理員的屬性。</p><p> 4.2.4 操作數(shù)據(jù)庫(kù)</p><
86、p> 在執(zhí)行查詢動(dòng)作之前,必須在程序中使用Connection對(duì)象的createStatement方法,建立Statement對(duì)象,以代表執(zhí)行的SQL語(yǔ)句。</p><p> 連接驅(qū)動(dòng),用戶登錄數(shù)據(jù)庫(kù)</p><p> Class.forName("oracle.jdbc.driver.OracleDriver");</p><p>
87、 String m_url="jdbc:oracle:thin:@localhost:1521:lifengDB";</p><p> String m_user="JSPUser"; //JSPUser為數(shù)據(jù)庫(kù)用戶名。</p><p> String m_password="JSPUser"; //數(shù)據(jù)庫(kù)密碼JSPUs
88、er。</p><p> Connection conDB=DriverManager.getConnection(m_url,m_user,m_password);</p><p> 建立Statement對(duì)象</p><p> Statement st=conDB.createStatement();</p><p> 執(zhí)行查詢動(dòng)
89、作,并將查詢結(jié)果以Resultset對(duì)象返回。</p><p> Resultset rs = st.executeQuery("select * from banjizhuce");</p><p> 取得字段數(shù)據(jù)。使用ResultSet類的get方法,可以從ResultSet對(duì)象中,取得當(dāng)前記錄中各個(gè)字段的數(shù)據(jù)。</p><p> 利
90、用while取得記錄集中的所有記錄。在程序中執(zhí)行數(shù)據(jù)庫(kù)查詢動(dòng)作所得到 的查詢結(jié)果,相當(dāng)于在程序中建立了一個(gè)虛擬數(shù)據(jù)工作表,既記錄集。當(dāng)需要從</p><p> 這個(gè)虛擬數(shù)據(jù)工作表中取得記錄時(shí),必須先將記錄指針移到該記錄上,然后利用ResultSet對(duì)象的get方法取得。此時(shí)必須利用ResultSet . next()方法,配合while循環(huán)移動(dòng)記錄指針,逐條將數(shù)據(jù)從記錄中取出。當(dāng)next()方法將指針移動(dòng)到最后
91、一條之后時(shí),返回false值。</p><p> while (rs.next())</p><p><b> { <tr></b></p><p> <td><%=rs.getString("banjimingcheng")%></td></p><
92、p> <td><%=rs.getString("nianji")%></td></p><p><b> </tr> }</b></p><p> 關(guān)閉數(shù)據(jù)對(duì)象和鏈接對(duì)象</p><p> public void jspDestroy()</p>&
93、lt;p><b> {</b></p><p><b> try</b></p><p> {st.close();</p><p> conDB.close();</p><p> rs.close();</p><p><b> }&l
94、t;/b></p><p> catch(Exception ex)</p><p><b> { </b></p><p> System.out.println(ex.toString());</p><p><b> }</b></p><p><
95、;b> }</b></p><p> 4.2.5數(shù)據(jù)庫(kù)接口</p><p> JDBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)是通過表4-5中的接口來完成的。所有的驅(qū)動(dòng)程序提供java.sql.*的實(shí)現(xiàn)</p><p> 表4-5 JDBC驅(qū)動(dòng)程序接口</p><p><b> 第5章 總結(jié)</b></p&g
96、t;<p> 經(jīng)過三個(gè)多月的調(diào)查、學(xué)習(xí)、研究和設(shè)計(jì),系統(tǒng)的制作接近了尾聲。在這里我將系統(tǒng)設(shè)計(jì)做如下總結(jié)。</p><p> 1)本系統(tǒng)的功能已經(jīng)達(dá)到設(shè)計(jì)的要求。系統(tǒng)中各個(gè)模塊的功能均已實(shí)現(xiàn),為整體系統(tǒng)的構(gòu)建奠定了基礎(chǔ)。</p><p> 2)系統(tǒng)模塊的功能可以被進(jìn)一步擴(kuò)展。例如,系統(tǒng)中還可以增加個(gè)人名片夾等類似的功能。系統(tǒng)的頁(yè)面可以設(shè)計(jì)的更加精美。</p>
97、<p> 3)系統(tǒng)中模塊劃分明確,模塊功能設(shè)計(jì)有較強(qiáng)的針對(duì)性。</p><p> 4)系統(tǒng)的設(shè)計(jì)遵循軟件開發(fā)的全過程,使我對(duì)軟件系統(tǒng)的開發(fā)過程有了更深刻的認(rèn)識(shí)。</p><p> 5)設(shè)計(jì)體現(xiàn)出了所使用的編程技術(shù)的優(yōu)點(diǎn),設(shè)計(jì)中結(jié)合了JavaBean。</p><p> 6)在系統(tǒng)的設(shè)計(jì)中能夠靈活運(yùn)用JSP的對(duì)象技術(shù),并且使用有效的SQL語(yǔ)言操作后
98、臺(tái)數(shù)據(jù)庫(kù)。</p><p> 軟件的設(shè)計(jì)沒有完美無缺的,這個(gè)系統(tǒng)在某些地方可能存在不足,還需要我們進(jìn)一步的改進(jìn)和完善。</p><p> 在這段時(shí)間里,我獲益非淺,不僅將所學(xué)的知識(shí)運(yùn)用到實(shí)踐,而且更進(jìn)一步學(xué)習(xí)了軟件開發(fā)技術(shù),增強(qiáng)了JSP開發(fā)技術(shù)的語(yǔ)法基礎(chǔ),能夠?qū)⑵浔容^靈活地使用。以下是我個(gè)人制作中得出的一點(diǎn)見解</p><p> 如果查詢語(yǔ)句中有多個(gè)Selec
99、t且嵌套,如 </p><p> public String getS(Statement stmt,String sql1,String sql2)</p><p><b> {</b></p><p> ResultSet rs=null;</p><p><b> Try</b><
100、;/p><p><b> {</b></p><p> rs=stmt.executeQuery(sql1);</p><p> while(rs.next())</p><p><b> {</b></p><p> ResultSet rs1=stmt.execut
101、eQuery(sql2)</p><p> If(rs1.next())</p><p><b> {</b></p><p> String s1=rs.getString(1);</p><p> String s2=rs1.getString(1);</p><p> ......
102、........</p><p><b> }}}</b></p><p> catch(SQLException e){}</p><p> return rs;</p><p><b> }</b></p><p> 如果如上所述,兩個(gè)以上的Select 語(yǔ)句使
103、用一個(gè)Statment ,那么將出錯(cuò)或者得出的結(jié)果不正確。可以使用增加Statement 參數(shù)的方法解決,,以實(shí)現(xiàn)上述查詢功能,但是使用增加Statement 參數(shù)的方法畢竟是有局限的,如果嵌套層數(shù)增加,Statement 參數(shù)也許也得跟著增加,這樣對(duì)于程序的可擴(kuò)展是不利的。</p><p> 另外,在獲取表單中值時(shí),經(jīng)常需要進(jìn)行字符串轉(zhuǎn)換,否則數(shù)據(jù)庫(kù)不能識(shí)別,只將字符存儲(chǔ)為亂碼。有時(shí)候還需要設(shè)置一個(gè)中間變量來
104、傳遞字符串的轉(zhuǎn)換。</p><p> 將這個(gè)作品投入使用是我們的期望,系統(tǒng)功能會(huì)在實(shí)踐中不斷的摸索,達(dá)到最佳的使用效果。</p><p><b> 第6章 展望</b></p><p> 本系統(tǒng)構(gòu)建成功后將是一個(gè)非常實(shí)用的作品。隨著一屆畢業(yè)生即將離開校門,又一屆新生將走進(jìn)大學(xué)。無論是在學(xué)校的學(xué)生,還是離校畢業(yè)生,他們都可以通過這個(gè)網(wǎng)絡(luò)虛擬
105、的世界重溫學(xué)生時(shí)代美好的時(shí)光。 正是類似此系統(tǒng)類型的網(wǎng)站的設(shè)計(jì)才拉近了人們的距離。人們的溝通娛樂不在局限在現(xiàn)實(shí)的世界。我們會(huì)繼續(xù)努力,爭(zhēng)取將作品投入使用。希望它能夠給用戶一個(gè)完美的使用空間。</p><p> 另外可擴(kuò)展性也很強(qiáng)。因?yàn)檫@個(gè)作品是以JavaBean和JSP技術(shù)相結(jié)合制作的,它的優(yōu)點(diǎn)不言而預(yù)。JSP的標(biāo)簽的可擴(kuò)展性和Java的可重用、可擴(kuò)展,移植性好的諸多特點(diǎn)奠定了這個(gè)作品擁有很大的擴(kuò)充的潛力。這個(gè)
106、作品要想真正投入使用還有一點(diǎn)距離,系統(tǒng)功能的完善必須在實(shí)踐中不斷的摸索,還要根據(jù)使用中真實(shí)的需要和軟件開發(fā)所能達(dá)到的程度。</p><p> 網(wǎng)站中的功能還有很多可以擴(kuò)充,例如,遠(yuǎn)程通訊,個(gè)人的記事簿,等等。</p><p><b> 致謝</b></p><p><b> !</b></p><
107、p><b> 參考資料</b></p><p> [1] 飛思科技產(chǎn)品研發(fā)中心 編著;《JSP應(yīng)用開發(fā)祥解》電子工業(yè)出版社,2001年7月。</p><p> [2] 楊鈺、盧銀娟、趙昊彤 等編著;《JSP網(wǎng)絡(luò)開發(fā)技術(shù)》人民郵電出版社,2002年1月。</p><p> [3] Hans Bergsten 著;何健輝、許俊娟 譯;
108、《JSP設(shè)計(jì)》中國(guó)電力出版社,2001年1月。</p><p> [4] 徐進(jìn)明編著;《JSP網(wǎng)站開發(fā)技術(shù)》清華大學(xué)出版社,2002年6月。</p><p> [5] 吳建平、尹霞、馮曉冬 編著;《JAVA程序設(shè)計(jì)語(yǔ)言》清華大學(xué)出版社。</p><p> [6] [美]Herbert Schildt 著 張玉清、尚勇 等譯;《JAVA2參考大全》清華大學(xué)出版社
109、,2000年2月。</p><p> [7] 北京博彥科技發(fā)展有限責(zé)任公司編著;《JAVA編程高手》北京大學(xué)出版社。</p><p> [8] Cay S.Horstmann、Gary Cornell 著;李如豹、剛冬梅等譯?!禞AVA核心技術(shù) I》2000年4月。</p><p> [9] Joseph J.Bambara、Paul R.Allen著;《J2
110、EE技術(shù)內(nèi)幕 》劉芳等譯;機(jī)械工業(yè)出版社。</p><p> [10] 薩師煊、王珊編著;《數(shù)據(jù)庫(kù)系統(tǒng)概論》高等教育出版社。</p><p> [11] 張?chǎng)摹埱?、范穎、王繼誠(chéng) 編著;《Oracle9i中文版基礎(chǔ)教程》清華大學(xué)出版社,2001年2月。</p><p> [12] Java和JSP技術(shù)的中文教學(xué)網(wǎng)站。http://www.ibm.com.cn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)(學(xué)籍管理系統(tǒng))
- 學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----學(xué)生學(xué)籍管理系統(tǒng)
- pb學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 學(xué)生學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 學(xué)籍管理系統(tǒng)-畢業(yè)設(shè)計(jì)論文.doc
- 學(xué)生學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)報(bào)告
- 畢業(yè)設(shè)計(jì)--學(xué)籍管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 學(xué)生學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)--c語(yǔ)言學(xué)籍管理系統(tǒng)
- 基于vb學(xué)生學(xué)籍管理系統(tǒng)畢業(yè)設(shè)計(jì)
- java開發(fā)的畢業(yè)設(shè)計(jì)-學(xué)籍管理系統(tǒng)
- 學(xué)籍管理系統(tǒng)2_畢業(yè)設(shè)計(jì)論文.doc
- 學(xué)籍管理系統(tǒng)3_畢業(yè)設(shè)計(jì)論文.doc
- 畢業(yè)設(shè)計(jì)--學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)信息管理畢業(yè)設(shè)計(jì)--學(xué)生學(xué)籍管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)---高校學(xué)籍信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 學(xué)籍管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 學(xué)籍管理畢業(yè)設(shè)計(jì)說明書
- 畢業(yè)設(shè)計(jì)--基于uml高校學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論