【正文】
S P 的 6 種內(nèi)部組件相對(duì)應(yīng)): 1 . r e q ue s t 對(duì)象 客戶端的請(qǐng)求信息被封裝在 r e q ue s t 對(duì) 象 中 , 通 過(guò) 它 才 能 了 解 到客戶的需求,然后做出響應(yīng)。它是 H ttp S e r v l e tR e q ue s t 類(lèi)的實(shí)例。 2 . r e s p o ns e 對(duì)象 r e s p o ns e 對(duì)象包含了響應(yīng)客戶請(qǐng)求的有關(guān)信息,但在 J S P 中很少直接用到它。它是 H ttp S e r v l e tR e s p o ns e 類(lèi)的實(shí)例。 3 . s e s s i o n 對(duì)象 s e s s i o n 對(duì) 象 指 的 是 客 戶 端 與 服 務(wù) 器 的 一 次 會(huì) 話 , 從 客 戶 端 連 到服 務(wù) 器 的 一 個(gè) We b A p p l i c a ti o n 開(kāi) 始 , 直 到 客 戶 端 與 服 務(wù) 器 斷 開(kāi) 連 接 東北林業(yè)大學(xué)本科畢業(yè)論文 34 為止。它是 H ttp S e s s i o n 類(lèi)的實(shí)例 . 4 . o ut 對(duì)象 o ut 對(duì)象是 J s p Wr i te r 類(lèi)的實(shí)例 ,是向客戶端輸出內(nèi)容常用的對(duì)象 5 . p a ge 對(duì)象 p a ge 對(duì) 象 就 是 指 向 當(dāng) 前 J S P 頁(yè)面本身,有點(diǎn)象類(lèi)中的 t hi s 指針,它是 j a v a . l a ng. O b j e c t 類(lèi)的實(shí)例 6 . a p p l i c a ti o n 對(duì)象 a p p l i c a ti o n 對(duì)象實(shí)現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開(kāi) 始 于 服 務(wù) 器 的 啟 動(dòng) , 直 到 服 務(wù) 器 的 關(guān) 閉 , 在 此 期 間 , 此 對(duì) 象 將 一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對(duì)此 對(duì) 象 的 同 一 屬 性 進(jìn) 行 操 作 ; 在 任 何 地 方 對(duì) 此 對(duì) 象 屬 性 的 操 作 , 都將影響到其他用戶對(duì)此的訪問(wèn)。服務(wù)器的啟 動(dòng) 和 關(guān) 閉 決 定 了a p p l i c a ti o n 對(duì)象的生命。它是 S e r v l e tC o nte xt 類(lèi)的實(shí)例。 7 . e xc e p ti o n 對(duì)象 e xc e p ti o n 對(duì) 象 是 一 個(gè) 例 外 對(duì) 象 , 當(dāng) 一 個(gè) 頁(yè) 面 在 運(yùn) 行 過(guò) 程 中 發(fā) 生了例外,就產(chǎn)生這個(gè)對(duì)象。如果一個(gè) J S P 頁(yè) 面 要 應(yīng) 用 此 對(duì) 象 , 就 必 須把 i s E r r o r P a ge 設(shè)為 tr ue ,否則無(wú)法編譯。他實(shí)際上是j a v a . l a ng. T hr o w a b l e 的對(duì)象 8 . p a ge C o nte xt 對(duì)象 p a ge C o n te x t 對(duì)象提供了對(duì) J S P 頁(yè)面內(nèi)所有的對(duì)象及名字空間的訪 問(wèn) , 也 就 是 說(shuō) 他 可 以 訪 問(wèn) 到 本 頁(yè) 所 在 的 S E S S I O N, 也 可 以 取 本 頁(yè)面所在的 a p p l i c a ti o n 的 某 一 屬 性 值 , 他 相 當(dāng) 于 頁(yè) 面 中 所 有 功 能 的 集大成者,它的本類(lèi)名也叫 p a ge C o nte xt。 9 . c o nfi g 對(duì)象 c o n fi g 對(duì) 象 是 在 一 個(gè) S e r v l e t 初 始 化 時(shí) , J S P 引 擎 向 它 傳 遞 信 息 用的,此信息包括 S e r v l e t 初始化時(shí)所要用到的參數(shù)(通過(guò)屬性名和屬 東北林業(yè)大學(xué)本科畢業(yè)論文 35 性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過(guò)傳遞一個(gè) S e r v l e tC o nte x t 對(duì)象) MVC 設(shè)計(jì)模式 MVC 模式的基本形式圖如圖 6 4 所示。 用 戶控 制 器視 圖模 型輸 入顯 示 圖 6 4 MVC 模式的基本形式圖 M V C ( Mo d e l Vi e w C o ntr o l l e r )模 式 并 不 是 J 2 E E 行 業(yè) 人 士 標(biāo) 新 立異的。 M V C 的 核 心 就 是 要 做 到 三 級(jí) 甚 至 多 級(jí) 的 松 散 耦 合 , M V C 模式將系統(tǒng)分為三個(gè)部分,分別是數(shù)據(jù)模型、視圖和控制器,并定義了這三個(gè)部分之間實(shí)現(xiàn)通信的一種模式,使每個(gè)部分不必 卷入到其他部分的狀態(tài)表示和方法實(shí)現(xiàn)的細(xì)節(jié)中去。每個(gè)部分有自己的數(shù)據(jù)管理規(guī)則,各個(gè)對(duì)象之間的通信只能使用自己定義的一個(gè)受限連接集合進(jìn)行。保持這種分離性通常是面向?qū)ο缶幊毯驮O(shè)計(jì)要追求的目標(biāo),讓各個(gè)對(duì)象只需專(zhuān)注于自己的事務(wù)。 模型部分代表 了商業(yè)數(shù)據(jù)的訪問(wèn)及修改數(shù)據(jù)的操作。當(dāng)數(shù)據(jù)發(fā)生改變時(shí),要負(fù)責(zé)通知視圖部分,并且提供視圖查詢狀態(tài)的能力。另外,還向控制部分提供應(yīng)用功能。 視圖部分以自己的方式顯示模型的內(nèi)容。訪問(wèn)模型的數(shù)據(jù),并且當(dāng)模型的數(shù)據(jù)發(fā)生變化時(shí)更新模型的顯示。視圖還把從用戶那里得到的信息傳給控制部分。 控制部分定義了應(yīng)用的行為。分發(fā)用戶請(qǐng)求和選擇表現(xiàn)視圖,還負(fù)責(zé)解釋用戶輸入,進(jìn)而調(diào)用模型的功能。在 We b 應(yīng) 用 中 , 用 戶輸入包括對(duì) We b 級(jí)資源的 H T T P、 G E T 和 P O S T 請(qǐng) 求 。 控 制 部 分 根 據(jù) 東北林業(yè)大學(xué)本科畢業(yè)論文 36 用戶交互和模型的狀態(tài)選擇要顯示的視圖。一個(gè)應(yīng)用程序一般為相關(guān)的功能選擇一個(gè)控制部分。 Servlet Servlet 簡(jiǎn)介 s e r v l e t 是在服務(wù)器上運(yùn)行的小 程序 。 這 個(gè) 詞 是 在 J a v a a p p l e t 的環(huán)境中創(chuàng)造的, J a v a a p p l e t 是一種當(dāng)作單獨(dú)文件跟網(wǎng)頁(yè)一起發(fā)送的小程序,它通常用于在客戶端運(yùn)行,結(jié)果得到為用戶進(jìn)行運(yùn) 算或者根據(jù)用戶互作用定位圖形等服務(wù)。 服務(wù)器上需要一些程序,常常是根據(jù)用戶輸入訪問(wèn)數(shù)據(jù)庫(kù)的程序。這 些通常是使用公共網(wǎng)關(guān)接口( C G I( C o mmo n G a te w a y I nte r fa c e ) )應(yīng) 用 程 序 完 成 的 。 然 而 , 在 服 務(wù) 器 上 運(yùn) 行 J a v a , 這 種 程 序 可 使 用J a v a 編程語(yǔ)言實(shí)現(xiàn)。在通信量大的服務(wù)器上, J a v a s e r v l e t 的優(yōu)點(diǎn)在于 它 們 的 執(zhí) 行 速 度 更 快 于 C G I 程 序 。 各 個(gè) 用 戶 請(qǐng) 求 被 激 活 成 單 個(gè) 程序中的一個(gè)線程,而無(wú)需創(chuàng)建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請(qǐng)求的系統(tǒng)開(kāi)銷(xiāo)將明顯降低。 實(shí)現(xiàn)過(guò)程: 最早支 持 S e r v l e t 技術(shù)的是 J a v a S o ft 的 J a v a We b S e r v e r 。此后,一些其它的基于 J a v a 的 We b S e r v e r 開(kāi) 始 支 持 標(biāo) 準(zhǔn) 的 S e r vl e tA P I。S e r v l e t 的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài) We b 內(nèi)容。這個(gè)過(guò)程為: 客戶端發(fā)送請(qǐng)求至 服務(wù)器 端; 服務(wù)器將請(qǐng)求信息發(fā)送至 S e r v l e t 3 、 S e r v l e t 生成響應(yīng)內(nèi)容并將其傳給服務(wù)器。響應(yīng)內(nèi)容動(dòng)態(tài) 生成,通常取決于客戶端的請(qǐng)求 服務(wù)器將響應(yīng)返回給客戶端 S e r v l e t 看 起 來(lái) 像 是 通 常 的 J a v a 程序。 S e r v l e t 導(dǎo) 入 特 定 的 屬 于J a v a S e r v l e tA P I 的 包 。 因 為 是 對(duì) 象 字 節(jié) 碼 , 可 動(dòng) 態(tài) 地 從 網(wǎng) 絡(luò) 加 載 , 可 東北林業(yè)大學(xué)本科畢業(yè)論文 37 以說(shuō) S e r v l e t 對(duì) S e r v er 就如同 A p p l e t 對(duì) C l i e nt 一樣,但是,由 于S e r v l e t 運(yùn)行于 S e r v e r 中,它們并不需要一個(gè)圖形用戶界面。從這個(gè)角度講, S e r v l e t 也被稱為 F a c e l e s s O b j e c t。 一個(gè) s e r v l e t 就是 J a v a 編程語(yǔ)言中的一個(gè)類(lèi),它被用來(lái)擴(kuò)展服務(wù)器 的 性 能 , 服 務(wù) 器 上 駐 留 著 可 以 通 過(guò) “請(qǐng)求 響應(yīng) ”編 程 模 型 來(lái) 訪 問(wèn) 的應(yīng)用程序。雖然 s e r v l e t 可以對(duì)任何類(lèi)型的請(qǐng)求產(chǎn)生響應(yīng),但通常只用來(lái)擴(kuò)展 We b 服務(wù)器的應(yīng)用程序。 Servlet 優(yōu)勢(shì) J a v a S e r v l e t 與 C G I( C o mmo n G a te w a y I n te r fa c e 公共網(wǎng)關(guān)接口 ) 的比較 : 與傳統(tǒng)的 C G I 和許多其他類(lèi)似 C G I 的技術(shù)相比, J a v a S e r v l e t 具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更 節(jié) 省 投 資 。 在 未 來(lái) 的 技 術(shù) 發(fā) 展 過(guò) 程 中 , S e r v l e t 有 可 能 徹 底 取 代C G I。 在傳統(tǒng) 的 C G I 中,每個(gè)請(qǐng)求都要啟動(dòng)一個(gè)新的進(jìn)程,如果 C G I程序本身的執(zhí)行時(shí)間較短,啟動(dòng)進(jìn)程所需要的開(kāi)銷(xiāo)很可能反而超過(guò)實(shí)際執(zhí)行時(shí)間。而在 S e r v l e t 中,每個(gè)請(qǐng)求由一個(gè)輕量級(jí)的 J a v a 線程處理 (而不是重量級(jí)的操作系統(tǒng)進(jìn)程 )。 在傳統(tǒng) C G I 中,如果有 N 個(gè) 并 發(fā) 的 對(duì) 同 一 C G I 程 序 的 請(qǐng) 求 , 則該 C G I 程 序 的 代 碼 在 內(nèi) 存 中 重 復(fù) 裝 載 了 N 次;而對(duì)于 S e r v l e t,處理請(qǐng)求的是 N 個(gè)線程,只需要一份 S e r v l e t 類(lèi)代碼。在性能優(yōu)化方面,S e r v l e t 也比 C G I 有著更多的選擇。 * 方便 S e r v l e t 提 供 了 大 量 的 實(shí) 用 工 具 例 程 , 例 如 自 動(dòng) 地 解 析 和 解 碼H T M L 表單數(shù)據(jù)、讀取和設(shè)置 H T T P 頭、處理 C o o ki e、跟蹤會(huì)話狀態(tài)等。 * 功能強(qiáng)大 東北林業(yè)大學(xué)本科畢業(yè)論文 38 在 S e r v l e t 中,許多使用傳統(tǒng) C G I 程序很難完成的任務(wù)都可以輕松 地 完 成 。 例 如 , S e r vl e t 能 夠 直 接 和 We b 服 務(wù) 器 交 互 , 而 普 通 的C G I 程 序 不 能 。 S e r v l e t 還 能 夠 在 各 個(gè) 程 序 之 間 共 享 數(shù) 據(jù) , 使 得 數(shù)據(jù)庫(kù) 連接池之類(lèi)的功能很容易實(shí)現(xiàn)。 * 可移植性好 S e r v l e t 用 J a v a 編寫(xiě), S e r vl e t A P I 具 有 完 善 的 標(biāo) 準(zhǔn) 。 因 此 , 為IP l a ne t E n te r p r i s e S e r v e r 寫(xiě)的 S e r v l e t 無(wú)需任何實(shí)質(zhì)上的改動(dòng)即可移植到 A p a c he、 Mi c r o s o ft IIS 或者 We b S ta r。 幾 乎 所 有 的 主 流 服 務(wù) 器 都直接或通過(guò)插件支持 S e r v l e t。 * 節(jié)省投資 不僅有許多廉價(jià)甚至免費(fèi)的 We b 服 務(wù) 器 可 供 個(gè) 人 或 小 規(guī) 模 網(wǎng) 站使用,而且對(duì)于現(xiàn)有的服務(wù)器,如果它不支持 S e r v l e t 的話,要加上這部分功能也往往是免費(fèi)的 (或只需要極少的投資 )。 MYSQL 數(shù)據(jù)庫(kù) MYSQL 概述 MySQL 是 一 個(gè) 小 型 關(guān) 系 型 數(shù) 據(jù) 庫(kù) 管 理 系 統(tǒng) ,開(kāi) 發(fā) 者 為 瑞 典 MySQL AB 公司。在 2021 年 1 月 16 號(hào)被 Sun 公 司 收 購(gòu) 。 而 2021 年, SUN 又被 Oracle 收 購(gòu) 。MySQL 是 一 種 關(guān) 聯(lián) 數(shù) 據(jù) 庫(kù) 管 理 系 統(tǒng) , 關(guān) 聯(lián) 數(shù) 據(jù) 庫(kù) 將 數(shù) 據(jù) 保 存 在 不 同 的 表 中 ,而 不 是 將 所 有 數(shù) 據(jù) 放 在 一 個(gè) 大 倉(cāng) 庫(kù) 內(nèi) 。 這 樣 就 增 加 了 速 度 并 提 高 了 靈 活 性 。MySQL 的 SQL“ 結(jié) 構(gòu) 化 查 詢 語(yǔ) 言 ” 。 SQL 是 用 于 訪 問(wèn) 數(shù) 據(jù) 庫(kù) 的 最 常 用 標(biāo) 準(zhǔn) 化 語(yǔ)言。 MySQL 軟 件 采 用 了 GPL( GNU 通 用 公 共 許 可 證 )。由 于 其 體 積 小 、 速 度 快 、總 體 擁 有 成 本 低 , 尤 其 是 開(kāi) 放 源 碼 這 一 特 點(diǎn) , 許 多 中 小 型 網(wǎng) 站 為 了 降 低 網(wǎng) 站總體擁有成本而選擇了 MySQL 作 為 網(wǎng) 站 數(shù) 據(jù) 庫(kù) 。 MYSQL 優(yōu)勢(shì) 可靠性和性能: M y S Q L A B 向公眾提供所有數(shù)據(jù)庫(kù)服務(wù)器軟件的早期版本,利用開(kāi)發(fā)源碼進(jìn)行為期幾個(gè)月的測(cè)試,之后才發(fā)布作為生產(chǎn)之用。 易 于 使 用 和 部 署 : M yS Q L 的 結(jié) 構(gòu) 體 系 易 于 定 制 , 而 且 速 度 極 東北林業(yè)大學(xué)本科畢業(yè)論文 39 快。其獨(dú)特的多存儲(chǔ)引擎結(jié)構(gòu)為企業(yè)客戶提供了廣泛的靈活性,賦予數(shù)據(jù)庫(kù)管理系統(tǒng)以卓越的緊 致