freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計論文—基于jsp網(wǎng)絡(luò)教學(xué)平臺系統(tǒng)的設(shè)計和開發(fā)-資料下載頁

2024-12-03 17:54本頁面

【導(dǎo)讀】革,己經(jīng)成為現(xiàn)代教育的必然要求。遠(yuǎn)程教育要得以順利、高效的實施,必然離。不開高效的管理與支撐平臺環(huán)境。構(gòu)建基于Java技術(shù)的網(wǎng)絡(luò)教學(xué)管理系統(tǒng)是進(jìn)。開發(fā)平臺以及對Web應(yīng)用系統(tǒng)的支持,對象建模語言UML的基本知識。在系統(tǒng)設(shè)計過程中,首先設(shè)計系統(tǒng)構(gòu)架,劃分功能模塊,并給出功能設(shè)計。在功能設(shè)計中,構(gòu)建設(shè)計類,運用設(shè)計類順序圖,類圖來實現(xiàn)了系統(tǒng)的設(shè)計模型。數(shù)據(jù)庫設(shè)計給出數(shù)據(jù)庫模型和數(shù)據(jù)庫中各個表的字段結(jié)構(gòu)。最后一章對系統(tǒng)關(guān)鍵。并對系統(tǒng)安全作出說明。本文對如何運用面向?qū)ο蟮姆椒▉砜焖俑咝У拈_發(fā)一個。復(fù)用性良好的安全的網(wǎng)絡(luò)應(yīng)用程序提供了一個良好的思路。

  

【正文】 實現(xiàn)了如下兩個公共方法用來檢查用戶是否是會員登錄。 (7) checkUser:用來檢查用戶登錄信息。它主要是通過 JDBC 訪問數(shù)據(jù)庫,通過檢查用戶名、口令、身份類型是否正確或者匹配 ,如果正確則置 login 為 true,并從數(shù)據(jù)庫中讀取相應(yīng)字段給屬性 UserlD 賦值 。 (8) isLogin:獲取 login 值,檢查是否是登錄會員的訪問。 (9) isStudent, isTeacher, isAdm:獲取登錄會員的身份類型。 Userbean在本系統(tǒng)的許多程序中都要用到,它是作為 session范圍的 bean定義的。 對會話的跟蹤和處理 HTTP (Hypertext Transfer Protocol)是一個基于請求 /響應(yīng)模式的應(yīng)用層協(xié)議。其最新版本為 ,在 RFC 2068 中最先提出,并在 RFC 2616 中進(jìn)行了修正。 HTTP對瀏覽器進(jìn)行請求、服務(wù)器提供響應(yīng)的規(guī)則進(jìn)行了定義。 一個客戶機(jī)與服務(wù)器建立連接后,發(fā)送一個請求給服務(wù)器,請求方的格式為:請求方法,請求 URI,協(xié)議版本號,后邊是 0 個或多個頭標(biāo)以及可能的請求數(shù)據(jù)。服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是 0 個或多個響應(yīng)頭標(biāo),一個空行指明頭標(biāo)的結(jié)束,最后是組成響應(yīng)的數(shù)據(jù)。 HTTP 最初的設(shè)計意圖是在 WWW 上發(fā)布文檔和圖像,因此,它使用了一個相當(dāng)簡 單的通信模型??蛻舳藢ξ臋n進(jìn)行請求,服務(wù)器響應(yīng)以文檔或錯誤代碼,最終事務(wù)處理完成。服務(wù)器不會保留請求的任何信息:下一次客戶端進(jìn)行請求時,服務(wù)器沒有方法可以將它與其他客戶端區(qū)別開來。這就是 HTTP 的協(xié)議無狀態(tài)性。 本系統(tǒng)采用 JSP/Servlet 會話 API 來對會話進(jìn)行跟蹤和管理。其機(jī)制是要求服務(wù)器保持所有會話數(shù)據(jù),并對其設(shè)置一個會話 ID,客戶端憑借該會話 ID 通知服務(wù)器將自己置于指定的會話環(huán)境中。一旦服務(wù)器初始化了一個會話對象并且客戶端接受了它,服務(wù)器就可以構(gòu)建復(fù)雜的、有效的對象并保存大量的屬于該會話的數(shù) 扼。為維持會話,服務(wù)器和客戶端之間需要傳輸?shù)膬H僅是一個會話 ID。 包中提供了一個 HttpSession 類。該類提供了一個像HashTable 一樣的接口,讓應(yīng)用程序開發(fā)者能夠根據(jù)名字存儲和檢索對象。會話 Session 本質(zhì)上是服務(wù)器端的一個對象。該對象在被創(chuàng)建后將被保留直至超時或,被參與一個會話的 Servlet 關(guān)閉??蛻舳擞糜跇?biāo)識一個 Session 的是一個會話 ID如果一個 JSP/Servlet 允許會話,任何時候,客戶端向服務(wù)器請求一個 JSP/Servlet頁面時,服 務(wù)器將檢查該 HTTP 請求的頭標(biāo)中是否包括一個會話 ID。如果客戶端的 HTTP 請求中包括一個有效的會話 ID,服務(wù)器返回該會話 ID 所標(biāo)識的一畢業(yè)設(shè)計 24 個 HttpSession 對象,并將該次請求 /響應(yīng)置于該會話環(huán)境。 如果客戶端的 HTTP 請求中不包括一個會話 ID,或是包括的會話 ID 無效,服務(wù)器將創(chuàng)建一個 HttpSession 對象,并將其引用返回到一個 Session 變量。隨后,服務(wù)器將在返回給客戶端的 Http 響應(yīng)中的 Setcookie 頭標(biāo)中加入一個名稱為JSESSIONID,取值為當(dāng)前會話 ID 的 cookie。 此 cookie 被送往客戶端,且在客戶端的后續(xù)的請求中將被返回給服務(wù)器。 數(shù)據(jù)庫連接池的實現(xiàn) 系統(tǒng)中的大量數(shù)據(jù)都是通過數(shù)據(jù)庫系統(tǒng)來進(jìn)行存儲和管理的,所以系統(tǒng)在使用過程中需要頻繁的訪問數(shù)據(jù)庫。在進(jìn)行數(shù)據(jù)庫操作之前,需要與數(shù)據(jù)庫建立連接。常規(guī)的辦法是使用數(shù)據(jù)庫的時候創(chuàng)建連接,使用完以后關(guān)閉連接,但是對于這種需要很頻繁的訪問數(shù)據(jù)庫的系統(tǒng)而言,頻繁的創(chuàng)建、關(guān)閉連接會極大的降低系統(tǒng)的性能,成為系統(tǒng)的瓶頸。 為了有效地解決這個問題,我們引入了連接池的概念。連接池是數(shù)據(jù)訪問中的重要技術(shù),在某些情況下對訪問數(shù)據(jù)庫的 性能有巨大的提高。它的核心思想是連接復(fù)用,通過建立一個數(shù)據(jù)庫連接池以及一套連接使用、分配、管理策略,使得一個數(shù)據(jù)庫連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。連接池對 JDBC 中的原始連接進(jìn)行了封裝,從而方便了數(shù)據(jù)庫應(yīng)用對于連接的使用,提高了開發(fā)效率,也正是因為這個封裝層的存在,隔離了應(yīng)用的本身的處理邏輯和具體數(shù)據(jù)庫訪問邏輯,使應(yīng)用本身的復(fù)用成為可能。 一個完整的連接池應(yīng)用應(yīng)包括功能:從連接池獲取 (或創(chuàng)建 )連接、將連接返回給連接池、系統(tǒng)關(guān)閉時關(guān)閉所有連接釋放所有資源;裝載 JDBC 驅(qū)動、 根據(jù)屬性文件中定義的屬性創(chuàng)建 DBConnectionPool、跟蹤應(yīng)用程序?qū)B接池的引用等;應(yīng)用程序?qū)B接池的使用。本文只介紹連接池的核心實現(xiàn)算法 :DBConnectionPool 類。 類 DBConnectionPool 提供以下功能: (1) 從連接池獲取 (或創(chuàng)建 )可用連接。 (2) 把連接返回給連接池。 (3) 在系統(tǒng)關(guān)閉時釋放所有資源,關(guān)閉所有連接。 (4) 數(shù)據(jù)庫連接池的自管理。包括根據(jù)連接使用次數(shù),連接空閑時間等來對連接進(jìn)行管理。以及連接池中連接個數(shù)的控制,如保證總連接數(shù)不低于設(shè)定的下限,不高于 上限。必要時關(guān)閉連接。 DBConnectionPool 的基本屬性如下: m ConnectionPoolMin:連接池中連接數(shù)量下限; 畢業(yè)設(shè)計 25 m ConnectionPoolMax:連接池中連接數(shù)量上限; m ConnectionUseCount:一個連接的最大使用次數(shù): m ConnectionTimeout:一個連接的最長空閑時間: m timer:定時器。 類 DBConnectionPool 通過實現(xiàn) TimerListene:接口來響應(yīng) Time:事件,從而實現(xiàn)其自管理功能。類 DBConnectionPool 同時實現(xiàn)了下列方法: public boolean initializes //連接池初始化 public void destroy0 //連接池的銷毀 public synchronized getConnection0 //取一個連接 public synchronized void freeConnection(Connection con) //釋放一個連接 public synchronized void close0 //關(guān)閉一個連接 private synchronized void removeFromPoolo //把一個連接從連接池中刪除 private synchronized void fiHPoolO//維護(hù)連接池大小 類 DBCnnnectionPool 的自管理流程圖如圖 51 所示。 51 使用數(shù)據(jù)庫連接池 畢業(yè)設(shè)計 26 將數(shù)據(jù)庫連接池的實現(xiàn)應(yīng)用于系統(tǒng)很容易實現(xiàn)。只需在需要數(shù)據(jù)庫連接對象時不直接創(chuàng)建其實例,而是從連接池中取得一個可用的連接對象即可。對應(yīng)于第4 章的系統(tǒng)設(shè)計,只需在 bean 類的方法里調(diào)用 初始化靜態(tài)的連接池管理對象,然后就可以調(diào)用相應(yīng)方法取得連接對象。在連接對象使用完畢后,不是直接關(guān)閉它,而是將其釋放回連接池。 數(shù)據(jù)訪問優(yōu)化實現(xiàn) 網(wǎng)絡(luò)教學(xué)管理系統(tǒng)中的業(yè)務(wù)數(shù)據(jù)使用相應(yīng)的實體組件作為對象視圖,客戶端可以通過組件提供的屬性讀寫方法。完成對業(yè)務(wù)數(shù)據(jù)地讀寫操作。通常,客戶端需要多次調(diào)用實體組件的 getter 方法才能得到所有的屬性值。但使用多個只返回單個屬性值的 getter 方法調(diào)用來從特定的實體組件獲取數(shù)據(jù)的效率將非常低下。隨著調(diào)用次數(shù)的逐漸增加,系統(tǒng)的性能會明顯下降。 為了提高數(shù)據(jù)訪問效 率,在設(shè)計上運用值對象的設(shè)計思想。值對象是普通的Java 對象,封裝了實體組件的所有屬性。值對象的設(shè)計思想是由在客戶端提出檢索請求時由實體組件構(gòu)造一個新的值對象實例,把檢索的屬性值拷貝到該對象中,然后把一該值對象實例傳遞給客戶端。客戶端可以通過檢索一該值對象獲取單個的屬性值。值對象是按照值傳遞的方式傳給客戶端的,對值對象的所有調(diào)用都是本地調(diào)用,加快了實體組件客戶端的訪問速度,從而提高了系統(tǒng)的數(shù)據(jù)處理性能。 網(wǎng)絡(luò)教學(xué)管理系統(tǒng)的用戶不僅可以檢索數(shù)據(jù),還能對特定的數(shù)據(jù)進(jìn)行修改。所有的這些業(yè)務(wù)處理過程都要用到值對象。 因此,在值對象的設(shè)計上采用了可更新值對象的策略,也就是說,不僅可以把來自實體組件的值傳遞到客戶端,而且可以把客戶端更新的數(shù)據(jù)傳遞回實體組件對象。為了保持值對象的狀態(tài),值對象必須是可序列化的。 以用戶信息實體組件為例,對可更新的值對象進(jìn)行簡略的說明。 (1) 定義值對象類 Cls_ TeacherInfo_ ValucObject public class Cls_ TeacherInfo_ ValueObject implements Serializable{ private name; private sex; public void Teachemame) {name=Teachername; j public getNameo{return name; } } (2) 修改用戶信息實體組件本地接口,在本地接口中添加值對象讀寫方法 getDatalnfo( )/setDatalnfo( ) (3) 在用戶信息實體組件類內(nèi)實現(xiàn)值對象的讀寫方法 //修改值 對象,相應(yīng)的實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的修改 畢業(yè)設(shè)計 27 public void setDataInfo(Cls_Teacherlnfoes Value0bject updateData){ setName(updateData,getName()); }//查詢值對象 public Cls_ Teacherlnfo_ ValueObject getDatalnfoo { Cls_ Teacherlnfo_ValucObject obj=new Cls_ Teacherrnfo_Value0bject (}: (getNameo); return obj; } 通過使用值對象,減少了從實體組件獲取屬性值的網(wǎng)絡(luò)調(diào)用次數(shù),提高數(shù)據(jù)訪問效率。 系統(tǒng)安全實現(xiàn) 網(wǎng)絡(luò)層安全 我們可以通過設(shè)定安全約束來保護(hù)網(wǎng)絡(luò)資源,這個安全約束決定何人被授權(quán)訪問那些由一系列的 URL 地址和 HTTP 協(xié)議描述的受保護(hù)的網(wǎng)絡(luò)資源。安全約束是很容易來通過 JDK 中的 deploytool 工具來設(shè)定。當(dāng)一個未認(rèn)證的用戶試圖訪問受保護(hù)的網(wǎng)絡(luò)資源時,系統(tǒng)進(jìn)行身份認(rèn)證,并且只有當(dāng)你是具有訪問這些資源的資格的用戶時才能進(jìn) 行訪問。 為了滿足企業(yè)中的不同安全級別和客戶對系統(tǒng)的需求, JSP/Servlet 提供了三種基于 web 客戶端的驗證方式: ( 1) HTTP 基本驗證 (HTTP Basic Authentication) HTTP 基本驗證是 HT P 協(xié)議所支持的驗證機(jī)制。這種驗證機(jī)制利用用戶名和密碼作為驗證信息。 Web 客戶端從用戶獲取用戶名和密碼,然后傳遞給 web 服務(wù)器, web 服務(wù)器在指定的區(qū)域 (realm)中驗證用戶。但需要注意的是,這種驗證方法是不夠安全的。因為這種驗證方法并不對用戶密碼進(jìn)行加密,而只是對密碼進(jìn)行基本的baseb4 的編碼。而且目標(biāo) web 服務(wù)器對用戶來說也是非驗證的。不能保證用戶訪問到的 web 服務(wù)器就是用戶希望訪問的。可以采用一些安全措施來克服這個弱點。例如在傳輸層上應(yīng)用 SSL 或者在網(wǎng)絡(luò)層上使用 IPSEC 或 VPN 技術(shù)。 基于表單的驗證 (FonnBased Authentication) 基于表單的驗證使系統(tǒng)開發(fā)者可以自定義用戶的登錄頁面和報錯頁面。這種驗證方法與基本 HTTP 的驗證方法的唯一區(qū)別就在于它可以根據(jù)用戶的要求制定登錄和出錯頁面 .基于表單的驗證方法同樣具有與基本 HTI39。P 驗證類似的不安全的弱點。用戶在表 單中填寫用戶名和密碼,而后密碼以明文形式在網(wǎng)路中傳遞,如果在網(wǎng)路的某一節(jié)點將此驗證請求截獲,再經(jīng)過反編碼很容易就可以獲取用戶畢業(yè)設(shè)計 28 的密碼。因此在使用基本 HTTP 的驗證方式和基于表單的驗證方法時,要確定這兩種方式的弱點對你的應(yīng)用是可接受的,為了消除明文傳輸?shù)拇_定,我們可以將基于表單的驗證建立在 SSL 層上。 ( 2)基于客戶端證書的驗證 (ClientCertificate Authentication) 基于客戶端證書的驗證方式要比上面兩種方式更安全。它通過 HTTPS(HTIP over SSL)來保證驗證的安全性。 安全套接層 ((Secure Sockets Layer)為驗證過程提供了數(shù)據(jù)加密,服務(wù)器端認(rèn)證,信息真實性等方面的安全保證。在此驗證方式中,客戶端必須提供一個公鑰證書,你可以把這個公鑰證書看作是你的數(shù)字護(hù)照。公鑰證書也稱數(shù)字證書,它是被稱作證書授權(quán)機(jī)構(gòu) (CA)一一個被信任的組織頒發(fā)的。這個數(shù)字證書必須符合 X509 公鑰體系結(jié)構(gòu) (PKI)的標(biāo)準(zhǔn)。如果確定這種驗證方式, Web 服務(wù)器將使用客戶端提供的數(shù)字證書來驗證用戶的身份。 正如上面所述,本系統(tǒng)采用的是基于表單的驗證。 在網(wǎng)絡(luò)層使用可編程性安全方法。當(dāng)僅使用聲明 性安全方法不能完全滿足應(yīng)用程序的安全要求時,利用可編程安全方法來滿足之。在 HttpServletRequest 接
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1