




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 jsp技術基礎知識 jsp(java server page)是sun公司開發(fā)的一種服務器端的腳本語言,自從1999年推出以來,逐步發(fā)展為開發(fā)web應用一項重要技術。jsp可以嵌套在html中,而且支持多個操作系統(tǒng)平臺,一個用jsp開發(fā)的web應用系統(tǒng),不用做什么改動就可以在不同的操作系統(tǒng)中運行。在本章接下來的內容中,首先將簡單介紹jsp的運行原理和基本語法,然后重點介紹在實際開發(fā)過程中技巧和方法。4.1 jsp簡介 jsp本質上就是把java代碼嵌套到html中,然后經過jsp容器的編譯執(zhí)行,可以根據這些動態(tài)代碼的運行結果生成對應的html代碼,從而可以在客戶端的瀏覽器中正常顯示。在
2、這個小節(jié)中將介紹jsp的運行原理、jsp的優(yōu)點和其運行環(huán)境的搭建。 4.1.1 運行原理 如果jsp頁面是第一次被請求運行,服務器的jsp編譯器會生成jsp頁面對應的java代碼,并且編譯成類文件。當服務器再次收到對這個jsp頁面請求的時候,會判斷這個jsp頁面是否被修改過,如果被修改過就會重新生成java代碼并且重新編譯,而且服務器中的垃圾回收方法會把沒用的類文件刪除。如果沒有被修改,服務器就會直接調用以前已經編譯過的類文件。(具體內容請參照書。)4.1.2 選擇jsp的原因 在web應用開發(fā)中,可供選擇的動態(tài)頁面語言技術有很多,例如php,asp,jsp等,在這些動態(tài)頁面語言中,jsp憑借
3、其自身的優(yōu)點成為開發(fā)人員最喜歡的語言之一。下面列出的幾條就是開發(fā)人員鐘愛jsp的重要原因。4.1.3 環(huán)境搭建 要運行jsp程序,必需為其提供一個jsp容器,也就是需要一個web服務器。支持jsp的服務器非常多,tomcat、resin、weblogic、websphere等對jsp的支持都非常好,但是由于weblogic和websphere都是功能非常強大的重量級服務器,而且價格昂貴,對計算機的硬件配置要求也比較高,所以在一般情況下,如果只用到jsp的技術,是沒有必要選擇這兩個服務器的。(具體內容請參照書。)4.2 jsp基本語法 本書的重點內容是介紹基于jsp的web開發(fā)技術,對于java
4、的語法在此不做詳細的介紹,這里所涉及jsp語法指的是在jsp中所特有的語法規(guī)范,在接下來的章節(jié)中將假設讀者已經了解java的基本語法,只介紹jsp的結構、變量聲名、表達式、動作、指令等jsp的特有語法。如對java語法有疑問的讀者可以參考相關語法書籍。4.3 程序結構 jsp就是把java代碼嵌套在html中,所以jsp程序的結構可以分為兩大部分:一部分是靜態(tài)的html代碼;另一部分是動態(tài)的java代碼和jsp自身的標簽和指令;當jsp頁面第一次被請求的時候,服務器的jsp編譯器會把jsp頁面編譯成對應的java代碼,根據動態(tài)java代碼執(zhí)行的結果,生成對應的純html的字符串返回給瀏覽器,這
5、樣就可以把動態(tài)程序的結果展示給用戶。(具體內容請參照書。)4.4 jsp動作指令 在web程序涉及中經常需要用到jsp的動作指令,例如在使用javabean的時候就離不開userbean的指令,jsp的強大功能和它豐富的動作指令標簽是分不開的。在接下來的章節(jié)中將對這些指令進行詳細的介紹,讀者可以仔細體會每個動作的示例程序,在示例程序中掌握這些動作指令的基本用法。4.4.1 include動作指令 include動作指令可以在jsp頁面中動態(tài)包含一個文件,這與include指令不同,前者可以動態(tài)包含一個文件,文件的內容可以是靜態(tài)的文件也可以是動態(tài)的腳本,而且當包含的動態(tài)文件被修改的時候jsp引擎
6、可以動態(tài)對其進行編譯更新。而include指令僅僅是把一個文件簡單的包含在一個jsp頁面中,從而組合成一個文件,僅僅是簡答的組合的作用。其功能沒有include動作指令強大。(具體內容請參照書。)4.4.2 forward 動作指令 forward動作指令可以用來控制網頁的重定向。即從當前頁面跳轉到另一個頁面。 forward動作的使用方法非常簡單,具體使用格式如下。 4.4.3 param動作指令 在上面forward動作指令中可以用程序控制頁面的跳轉,如果需要在跳轉的時候同時傳遞參數,這時候就需要用到param動作指令。param動作指令的具體使用方法可以參考下面的示例程序。(具體內容請參
7、照書。)4.4.4 plugin動作指令 元素用于在瀏覽器中播放或顯示一個對象(典型的就是applet和bean),而這種顯示需要在瀏覽器的java插件。當jsp文件被編譯,送往瀏覽器時,元素將會根據瀏覽器的版本替換成或者元素。4.4.5 usebean動作指令usebean動作指令可以在jsp中引用javabean,這個動作指令在實際開發(fā)過程中經常會用到。在第六章javabean的講解過程中將對這個動作指令做詳細的介紹。在這里我們僅僅知道其基本用法即可,而且在這里不在用示例程序說明。usebean的使用格式如下。 其中id為所用到的javabean的實例對象名稱,class是javabean
8、對應類的包路徑,包括包名和類名。scope是這個javabean的有效范圍,共有page、request、session、application四個值可以選擇。4.4.6 setproperty動作指令setproperty一般情況下是和javabean配合使用的,用來給javabean的實例對象進行賦值操作,setproperty的基本方法有以下兩種。上面這種方法是setproperty動作指令最基本的用法,用來給javabean實例對象的某一個屬性賦值。上面這種javabean的賦值方法也是經常用到的, 4.4.7 getproperty動作指令 getproperty一般情況下也是和ja
9、vabean配合使用的,用來取出javabean實例對象的屬性值。這個動作指令的基本使用方法如下。 4.5 jsp指令 jsp的指令雖然沒有動作指令那么豐富,但是其作用卻是不容忽視的,例如page指令,在設置顯示編碼、引入類的包路徑、設置錯誤頁面等方面都是必不可少的。在接下來的章節(jié)中將介紹jsp的兩個指令標簽。4.5.1 page指令 page指令可以用來定義jsp也面的全局屬性。例如編碼、錯誤頁面等。page指令的屬性很多,下面來具體介紹它的各個屬性。(具體內容請參照書。)4.5.2 include指令 include指令可以在當前的jsp頁面中包含一個文件,從而和當前頁面組成一個整體的文件
10、。這中包含僅僅是靜態(tài)包含。(具體內容請參照書。)4.6 jsp內置對象簡介 jsp內置對象即無需聲名就可以直接使用的對象實例,在實際的開發(fā)過程中,比較常用的jsp內置對象有reqest、response、session、out、application等,在接下來的章節(jié)中將詳細介紹這幾個jsp內置對象的使用方法。jsp其他的幾個內置對象在實際的開發(fā)中并不十分常用,在這里不做具體介紹。4.7 request對象 request對象代表這從用戶發(fā)送過來的請求,從這個對象中間可以取出客戶端用戶提交的數據或者是參數。這個對象只有接受用戶請求的頁面才可以訪問。4.7.1 request對象使用場合 如果要
11、與用戶的互動,必須要知道用戶的需求,然后根據這個需求生成用戶期望看到的結果。這樣才能實現與用戶的互動。在web應用中,用戶的需求就抽象成一個request對象,這個對象中間包括用戶所有的請求數據,例如通過表單提交的表單數據,或者是通過url等方式傳遞的參數,這些就是用戶的需求。request正是用來收集類似這些用戶的輸入數據和參數。同時,request對象中還包括一些服務器的信息,例如端口、真實路徑、訪問協議等信息,通過request對象可以取得服務器的這些參數。4.7.2 request對象主要方法 request對象的方法非常多,在這里我們只介紹其中最常用的幾種方法,其他方法可以參考相關類
12、庫的介紹。(具體內容請參照書。)4.7.3 request對象使用示例 1使用request對象取得表單數據 request獲取用戶數據的一個主要方式就是獲取表單數據,(具體內容請參照書。)4.8 response對象 response對象是服務器端向客戶端返回的數據,從這個對象中間可以取出一部分與服務器互動的數據和信息。只有接受這個對象的頁面才可以訪問這個對象。4.8.1 response對象使用場合 既然用戶可以對服務器發(fā)出請求,服務器就需要對用戶的請求做出反應。這里服務器就可以使用response對象向用戶發(fā)送數據。response是對應request的一個對象。如果需要獲取服務器返回的
13、處理信息,就可以對response進行操作,同時當服務器需要再客戶端進行某些操作的時候也需要用到response對象,例如服務器要在客戶端生成cookies,那么這時候response對象就是一個很好的選擇。4.8.2 response對象主要方法 response的方法也很多,但是常用的也就其中的幾個,下面介紹比較常用的幾個方法。1addcookie(cookie cookie)這個方法可以添加一個cookie對象,用來保存客戶端的用戶信息。 2containsheader(string name)這個方法判斷指定的頭信息是否存在。(具體內容請參照書。)4.8.3 response對象使用示
14、例 response的用法很多,在這里我們用response來實現一個頁面的重定向, 4.9 session對象 session對象維護著客戶端用戶和服務器端的狀態(tài),從這個對象中間可以取出用戶和服務器交互的過程中的數據和信息。這個對象在用戶關閉瀏覽器離開web應用之前一直有效。4.9.1 session對象使用場合 session對象中保存的內容是用戶與服務器整個交互過程中的信息,如果是想在整個交互的過程中都可以訪問到的信息,就可以選擇存放在session對象中。例如在用戶登錄的過程中,可以在session中記錄用戶的登錄狀態(tài),這樣用戶就不必在每個頁面都重新登錄,只要用戶沒有離開當前的web應
15、用系統(tǒng),就可以一直保存登錄的狀態(tài)。 4.9.2 session對象主要方法 session所提供的方法并沒有前面幾個內置對象那么多,但是基本都是非常常用的。4.9.3 session對象使用示例 在這里我們模擬一個簡單的用戶登錄動作,在這個示例程序中,我們不對提交的登錄信息做具體的驗證,只要用戶名和密碼都不為空就可以登錄系統(tǒng),這樣處理只是為了方便展示session的使用方法,在具體的開發(fā)中必須要對登錄信息進行驗證的。(具體內容請參照書。)4.10 out對象 這個對象是在web應用開發(fā)過程中使用最多的一個對象,其功能就是動態(tài)的向jsp頁面輸出字符流,從而把動態(tài)的內容轉化成html形式來展示。這
16、個對象在任何jsp頁面中都可以任意訪問。4.10.1 out對象使用場合 out對象的功能就是向jsp頁面輸出數據信息。所以當有動態(tài)信息要展示給用戶的時候就要用到out對象。在前面的很多示例中已經多次用到這個對象,讀者從中可以很清楚的看到,out對象就是用來輸入動態(tài)內容信息的。4.10.2 out對象主要方法 在這里只介紹out對象最常用的方法。 1clear() 這個方法可以清除緩沖區(qū)的數據,但是僅僅是清除,并不向用戶輸出。 2clearbuffer() 這個方法可以清除緩沖區(qū)的數據,同時把這些數據向用戶輸出。(具體內容請參照書。)4.10.3 out對象使用示例 out對象在前面的示例中已
17、經多次使用到,在這里就不再針對這個對象舉例說明。4.11 application對象 application對象保存著整個web應用運行期間的全局數據和信息,從web應用開始運行開始,這個對象就會被創(chuàng)建,在整個web應用運行期間可以在任何jsp頁面中訪問這個對象。4.11.1 application對象使用場合 application中保存的信息可以在整個應用的任何地方訪問,這個session對象類似,但和session對象還是有所區(qū)別的。只要web應用還在正常運行,application對象就可以訪問,而session對象在用戶離開系統(tǒng)就被注銷。4.11.2 application對象主要方
18、法 下面介紹application對象的最常用的主要方法。 1getattribute(string name) 2getserverinfo() 3removeattribute(string name) 4setattribute(string name,object o)4.11.3 application對象使用示例 在這里我們要實現一個簡單的計數器,這個計數器就是利用application對象來儲存計數器的值,用來統(tǒng)計服務器開始運行以來的訪問量。4.12 jsp中文問題完全解決方案 對于中文亂碼問題java中才用的默認編碼方式是unicode,而中文的編碼方式一般情況是gb2312,
19、因為編碼格式的不同,導致在中文不能正常顯示。在不同的jdk版本和不同的應用服務器中的處理方法是不同的。但是其本質上都是一樣的,就是把中文字符轉化成合適的編碼方式,或者是把在顯示中文的環(huán)境中聲名采用gb2312的編碼。統(tǒng)一編碼方案之后自然可以正常顯示。4.12.1 jsp頁面中文亂碼 在jsp頁面中,中文顯示亂碼有兩種情況:一種是html中的中文亂碼,另一中是在jsp中動態(tài)輸出的中文亂碼。(具體內容請參照書。)4.12.2 url傳遞參數中文亂碼 在一般情況下,可以用類似http:/localhost:8080/chapt4/urlcharset.jsp?param=中文這種形式來傳遞參數,而且
20、html在處理表單的時候,當表單的method采用get方法的時候,傳遞參數的形式與url傳遞參數的形式基本一樣。(具體內容請參照書。)4.12.3 表單提交中文亂碼 對于表單中提交的數據,可以使用request.getparameter()的方法獲取。但是當表單中如果出現中文數據的時候就會出現亂碼。(具體內容請參照書。)4.12.4 數據庫操作中文亂碼 在建立數據庫的時候,應該選擇支持中文的編碼格式,最好能和jsp頁面的編碼格式保持一致,這樣就可以盡可能減少數據庫操作的中文亂碼問題。同時在jdbc連接數據庫的時候可以使用類似下面這種形式的url。jdbc:microsoft:sqlserve
21、r:/localhost:1433;databasename=pubs;useunicode=true;characterencoding=gb23124.12.5 eclipse開發(fā)工具中jsp文件中文不能保存 在eclipse中,jsp文件默認的編碼格式為iso-8859-1,所以在jsp代碼中間如果出現中文就不能保存,4.12.6 eclipse開發(fā)工具中中文顯示亂碼 在eclipse中,由于默認的jsp編碼格式為iso-8859-1,所以當打開由其他編輯器編輯的jsp頁面就會出現亂碼,(具體內容請參照書。)4.12.7 jsp下載中文文件名亂碼 在實現文件下載功能的時候,如果出現中文文件名,如果不進行特殊的處理,下載下來的中文文件名會變成亂碼,在下載前,就需要對這個文件名進行處理,然后才能正常顯示中文的文件名, 4.13 其他jsp開發(fā)技巧 (具體內容請參照書。)4.13.1 自定義錯誤頁面 在jsp中,如果出現代碼的錯誤,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 省級中小學現代教育技術裝備標準實施指南
- 基于二進制分析的iOS應用漏洞動態(tài)行為研究-洞察及研究
- 微膿腫組織病理特征-洞察及研究
- 在役橋梁檢測與健康監(jiān)測技術融合及診斷體系創(chuàng)新研究
- 權責清單管理暫行辦法
- 關鍵技術改進下的期盼
- 血液透析專業(yè)理論與實踐考核要點解析
- 安全生產三卡是指
- 生產安全事故調查處理報告
- 綠色金融估值體系-洞察及研究
- T-SHNA 0002-2023 淚道沖洗操作規(guī)范
- 老年患者風險評估及安全管理
- 安全事故案例警示教育培訓
- 散打說課課件
- 腸梗阻導管在臨床中的使用及護理課件
- 面館開店投資 項目融資計劃書
- 車體-罐車(車輛構造檢修課件)
- 草魚高效養(yǎng)殖模式與技術
- 腎骨片產品課件
- 幼師應聘個人簡歷表格
- 海運出口培訓課程教學課件
評論
0/150
提交評論