今天,廣州編輯陳峰將告訴大家如何掌握零基礎(chǔ)JSP技術(shù)。請(qǐng)看下面。(大衛(wèi)亞設(shè))。
一、Java基本開發(fā)JSP概述
1.關(guān)于JSP
Javaserver Pages (JSP)從單詞“server”中可以看出,這其實(shí)也是一種Java服務(wù)器端技術(shù),但實(shí)際上可以簡(jiǎn)單地將JSP想象為server。一點(diǎn)也沒錯(cuò)。
Jsp的實(shí)質(zhì),就是客戶端需要的資源是通過jsp技術(shù)動(dòng)態(tài)生成的。2.jsp的技術(shù)原理
1)當(dāng)客戶端在訪問一個(gè)jsp資源時(shí),服務(wù)器上有相應(yīng)的servlet來負(fù)責(zé)jsp資源,那么該servlet將會(huì)把jsp頁面翻譯成一個(gè)servlet,然后執(zhí)行該servlet的service方法。
2)服務(wù)器將jsp翻譯成java程序(就是一個(gè)Servlet),然后執(zhí)行該Servlet的service方法,在方法內(nèi)部動(dòng)態(tài)地向客戶端寫html代碼。
因此jsp就是一個(gè)servlet,也就是jsp頁面將被翻譯成servlet
3.jsp與servlet的選擇
jsp就是servlet,那么如果碰到需要寫繁多的html代碼,建議使用jsp,如果需要寫繁多的java代碼,建議使用servlet。
?二、JSP技術(shù)詳解
1.JSP腳本
就是怎樣在jsp頁面中使用java代碼,使用了腳本的地方,就不會(huì)作為輸出流的內(nèi)容,而是作為java代碼來執(zhí)行。使用方式有三種:
1) <% java代碼 %>
jav代碼會(huì)被作為程序的一部分來執(zhí)行,而不會(huì)被翻譯成out.write(),這是常用的。
2) <% java代碼 %>
會(huì)被翻譯成 out.print(java代碼)
3) <% java代碼 %>
聲明成員變量。
4)jsp的注釋方式
· html的注釋:
用戶看得到,程序員也看得到
· java的注釋:// 單行注釋 /多行注釋/
用戶看不到,但是會(huì)被翻譯
· jsp的注釋:
用戶看不到,不會(huì)被翻譯,只有程序員在寫jsp頁面時(shí)才看得到。
2.三大指令
1)page指令
page指令是用于告訴服務(wù)器該如何翻譯此jsp頁面。通過page指令的屬性來指明翻譯的效果。
· language: 指的是jsp頁面支持哪種語言,只支持java,所以該屬性可以省略
· pageEncoding和contentType寫一個(gè)就行,建議使用pageEncoding,更加簡(jiǎn)單
· session:默認(rèn)值是true,默認(rèn)情況下服務(wù)器會(huì)為該頁面開辟一個(gè)session空間
· import:用于導(dǎo)入該頁面中的java類需要用到的包
· errorPage:當(dāng)發(fā)生錯(cuò)誤時(shí)跳轉(zhuǎn)到的資源,注意,該地址是一個(gè)服務(wù)器地址。
· isErrorPage:默認(rèn)值是false。當(dāng)在web.xml中配置錯(cuò)誤頁面時(shí),需要將該jsp頁面的isErrorPage設(shè)為true.
404
總結(jié):一般情況下,page指令就這么寫即可:
2)include指令:靜態(tài)包含,file屬性使用的是服務(wù)器地址。
include指令是用于在一個(gè)jsp頁面中包含另一個(gè)jsp頁面,兩個(gè)頁面組合成一個(gè)頁面發(fā)送給客戶端。
所謂的靜態(tài)包含,在翻譯時(shí)是把被包含的jsp頁面寫給客戶端。那么此時(shí)客戶端拿到的是兩套html標(biāo)簽。
3)taglib指令:標(biāo)簽庫(kù)
taglib指令用于引入第三方標(biāo)簽庫(kù),通過taglib指令中的prefix指明前綴,通過前綴來使用第三方標(biāo)簽庫(kù)中的標(biāo)簽
3.四大域?qū)ο?(jsp有四個(gè),servlet有三個(gè)(request,session,servletContext))
1) pageContext
(1)pageContext作為域?qū)ο?/p>
· 描述當(dāng)前page的上下文。那么pageContext對(duì)象是一個(gè)域?qū)ο?,所謂域?qū)ο?,就是提供了一個(gè)區(qū)域,用來存儲(chǔ)數(shù)據(jù)。因此當(dāng)前的page就能向pageContext對(duì)象中存儲(chǔ)數(shù)據(jù).
pageContext域?qū)ο蟮淖饔梅秶寒?dāng)前page(頁面)
setAttribute(String key,Object value);
getAttribute(String key);
removeAttribute(String key);
· 向其他域?qū)ο笾胁僮鲾?shù)據(jù).
(String key,Object value, int scope);向其他域?qū)ο笾写嬷?/p>
(String key, int scope);向其他域?qū)ο笾腥≈?/p>
(String key, int scope);向其他域?qū)ο笾幸瞥?/p>
int scope來自于PageContext類的常量
REQUEST_SCOPE: 表示request域
SESSION_SCOPE: 表示session域
APPLICATION_SCOPE: 表示application域
· findAttribute(String key):Object :這是通過鍵,向所有域中搜索數(shù)據(jù)。
搜索的順序:
pageContext->request->session->application
(2)可以通過pageContext對(duì)象來獲取其他八個(gè)內(nèi)置對(duì)象
通過pageContext的get*()來獲得。
2)request
作用范圍:一次請(qǐng)求
3)session
作用范圍:一次會(huì)話
4)application
作用范圍:當(dāng)前web應(yīng)用
4.九大內(nèi)置對(duì)象
所謂的內(nèi)置對(duì)象,即在jsp頁面的腳本中能直接使用的java對(duì)象。
· out: 輸出流
當(dāng)通過out的write()寫內(nèi)容時(shí),實(shí)際是往out的緩沖區(qū)(默認(rèn)大小是8kb)中去寫,有兩種情況導(dǎo)致緩沖區(qū)的內(nèi)容會(huì)沖刷進(jìn)底層的輸出流中
1)out對(duì)象被銷毀
2)out的緩沖區(qū)不夠用了。其實(shí)我們可以設(shè)置out緩沖區(qū)的大小。如果緩沖區(qū)是0kb,那么out就把內(nèi)容直接寫到response緩沖區(qū)中。
· page:this,表示當(dāng)前的Servlet對(duì)象
· pageContext:重點(diǎn),表示當(dāng)前page的上下文對(duì)象,也是一個(gè)域?qū)ο?/p>
· session:當(dāng)jsp頁面的page指令的session屬性為true時(shí),才會(huì)有session對(duì)象
· request:
· response
· exception 當(dāng)jsp頁面的page指令的isErrorPage屬性為true時(shí),才會(huì)有exception對(duì)象
· application: 實(shí)際就是ServletContext對(duì)象
· config:實(shí)際就是ServletConfig對(duì)象
5.Jsp標(biāo)簽
1) jsp:include
動(dòng)態(tài)包含:在一個(gè)頁面中包含另一個(gè)頁面的內(nèi)容
和靜態(tài)的區(qū)別:
靜態(tài)包含會(huì)在翻譯的過程中直接翻譯被包含的頁面,被包含的頁面不會(huì)產(chǎn)生java文件。
而動(dòng)態(tài)包含會(huì)在翻譯的過程中只翻譯自己頁面的內(nèi)容,被包含的頁面的翻譯交給相應(yīng)的類來完成,被包含的頁面會(huì)產(chǎn)生java文件,實(shí)際開發(fā)中更加常用動(dòng)態(tài)包含。
2)jsp:forward
請(qǐng)求轉(zhuǎn)發(fā),與servlet中的請(qǐng)求轉(zhuǎn)發(fā)的效果一致。
1.《jsp入門教程看這里!Java學(xué)習(xí)知識(shí)點(diǎn):小白如何掌握J(rèn)SP技術(shù)?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《jsp入門教程看這里!Java學(xué)習(xí)知識(shí)點(diǎn):小白如何掌握J(rèn)SP技術(shù)?》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/gl/2527424.html