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

正文內(nèi)容

基于jsp(java)網(wǎng)絡(luò)教學(xué)平臺(tái)系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)-資料下載頁(yè)

2025-05-07 19:49本頁(yè)面
  

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