Java開發之掌握JSP技術
一、Java初級開發之jsp概述
1.關於jsp
JavaServer Pages簡稱jsp,從“server”這個詞可以看出,這其實也是一門java服務端技術,其實可以簡單的把jsp認為是servlet,一點錯也沒有。Jsp的實質,就是客戶端需要的資源是透過jsp技術動態生成的。
2.jsp的技術原理
1)當客戶端在訪問一個jsp資源時,伺服器上有相應的servlet來負責jsp資源,那麼該servlet將會把jsp頁面翻譯成一個servlet,然後執行該servlet的service方法。
2)伺服器將jsp翻譯成java程式(就是一個Servlet),然後執行該Servlet的service方法,在方法內部動態地向客戶端寫html程式碼。
因此jsp就是一個servlet,也就是jsp頁面將被翻譯成servlet
3.jsp與servlet的選擇
jsp就是servlet,那麼如果碰到需要寫繁多的html程式碼,建議使用jsp,如果需要寫繁多的java程式碼,建議使用servlet。
二、JSP技術詳解
1.JSP指令碼
就是怎樣在jsp頁面中使用java程式碼,使用了指令碼的地方,就不會作為輸出流的內容,而是作為java程式碼來執行。使用方式有三種:
1) <% java程式碼 %>
jav程式碼會被作為程式的一部分來執行,而不會被翻譯成out.write(),這是常用的。
2) <% java程式碼 %>
會被翻譯成 out.print(java程式碼)
3) <% java程式碼 %>
宣告成員變數。
4)jsp的註釋方式
· html的註釋:
使用者看得到,程式設計師也看得到
· java的註釋:// 單行註釋 /多行註釋/
使用者看不到,但是會被翻譯
· jsp的註釋:
使用者看不到,不會被翻譯,只有程式設計師在寫jsp頁面時才看得到。
2.三大指令
1)page指令
page指令是用於告訴伺服器該如何翻譯此jsp頁面。透過page指令的屬性來指明翻譯的效果。
· language: 指的是jsp頁面支援哪種語言,只支援java,所以該屬性可以省略
· pageEncoding和contentType寫一個就行,建議使用pageEncoding,更加簡單
· session:預設值是true,預設情況下伺服器會為該頁面開闢一個session空間
· import:用於匯入該頁面中的java類需要用到的包
· errorPage:當發生錯誤時跳轉到的資源,注意,該地址是一個伺服器地址。
· isErrorPage:預設值是false。當在web.xml中配置錯誤頁面時,需要將該jsp頁面的isErrorPage設為true.
404
/error.jsp
總結:一般情況下,page指令就這麼寫即可:
2)include指令:靜態包含,file屬性使用的是伺服器地址。
include指令是用於在一個jsp頁面中包含另一個jsp頁面,兩個頁面組合成一個頁面傳送給客戶端。
所謂的靜態包含,在翻譯時是把被包含的jsp頁面寫給客戶端。那麼此時客戶端拿到的是兩套html標籤。
3)taglib指令:標籤庫
taglib指令用於引入第三方標籤庫,透過taglib指令中的prefix指明字首,透過字首來使用第三方標籤庫中的標籤
3.四大域物件 (jsp有四個,servlet有三個(request,session,servletContext))
1) pageContext
(1)pageContext作為域物件
· 描述當前page的上下文。那麼pageContext物件是一個域物件,所謂域物件,就是提供了一個區域,用來儲存資料。因此當前的page就能向pageContext物件中儲存資料.
pageContext域物件的作用範圍:當前page(頁面)
setAttribute(String key,Object value);
getAttribute(String key);
removeAttribute(String key);
· 向其他域物件中運算元據.
pageContext.setAttribute(String key,Object value, int scope);向其他域物件中存值
pageContext.getAttribute(String key, int scope);向其他域物件中取值
pageContext.removeAttribute(String key, int scope);向其他域物件中移除值
int scope來自於PageContext類的常量
REQUEST_SCOPE: 表示request域
SESSION_SCOPE: 表示session域
APPLICATION_SCOPE: 表示application域
· findAttribute(String key):Object :這是透過鍵,向所有域中搜尋資料。
搜尋的順序:
pageContext->request->session->application
(2)可以透過pageContext物件來獲取其他八個內建物件
透過pageContext的get*()來獲得。
2)request
作用範圍:一次請求
3)session
作用範圍:一次會話
4)application
作用範圍:當前web應用
4.九大內建物件
所謂的內建物件,即在jsp頁面的指令碼中能直接使用的java物件。
· out: 輸出流
當透過out的write()寫內容時,實際是往out的緩衝區(預設大小是8kb)中去寫,有兩種情況導致緩衝區的內容會沖刷進底層的輸出流中
1)out物件被銷燬
2)out的緩衝區不夠用了。其實我們可以設定out緩衝區的大小。如果緩衝區是0kb,那麼out就把內容直接寫到response緩衝區中。
· page:this,表示當前的Servlet物件
· pageContext:重點,表示當前page的上下文物件,也是一個域物件
· session:當jsp頁面的page指令的session屬性為true時,才會有session物件
· request:
· response
· exception 當jsp頁面的page指令的isErrorPage屬性為true時,才會有exception物件
· application: 實際就是ServletContext物件
· config:實際就是ServletConfig物件
5.Jsp標籤
1) jsp:include
動態包含:在一個頁面中包含另一個頁面的內容
和靜態的區別:
靜態包含會在翻譯的過程中直接翻譯被包含的頁面,被包含的頁面不會產生java檔案。
而動態包含會在翻譯的過程中只翻譯自己頁面的內容,被包含的頁面的翻譯交給相應的類來完成,被包含的頁面會產生java檔案,實際開發中更加常用動態包含。
2)jsp:forward
請求轉發,與servlet中的請求轉發的效果一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2769238/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java匹馬行天下之JavaWeb核心技術——JSPJavaWebJS
- java開發必須要掌握的20個核心技術Java
- Web前端開發掌握的技術Web前端
- Java匹馬行天下之JavaWeb核心技術——JSP(續一)JavaWebJS
- Java開發需要掌握哪些技術?Java程式設計師必備技能Java程式設計師
- Web開發技術選型之Java與PHPWebJavaPHP
- 後端開發者需要掌握的技術棧後端
- Spring Cloud 微服務實戰——Java開發人員必須掌握的技術SpringCloud微服務Java
- android 開發之 APT 技術AndroidAPT
- Java技術之掌握資料庫連線工具DBUtils的應用Java資料庫
- 做Java開發需要哪些技術?Java
- Android開發掌握什麼技術才不會被淘汰Android
- Web 開發必須掌握的三個技術:Token、Cookie、SessionWebCookieSession
- java底層鏈遊系統開發技術功能(成熟技術)Java
- Java開發技術大雜燴(一)之Redis、Jmeter、MySQL的那些事JavaRedisJMeterMySql
- 自學Java開發技術靠譜嗎?Java
- Java技術分享:SpringBoot多模組開發JavaSpring Boot
- 不重視技術,何談掌握核心技術?
- Java面試之技術框架Java面試框架
- 【收藏】Java開發者必去的技術網站Java網站
- 雲端計算開發技術,企業linux運維掌握這些技術才不會被淘汰Linux運維
- Web頁面或app等前端頁面之Java Web的JSP、Servlet、Cookie、Session等技術小結WebAPP前端JavaJSServletCookieSession
- java基礎學習:JavaWeb之JSPJavaWebJS
- Java安全基礎之Java Web核心技術JavaWeb
- Java技術分享之變數命名Java變數
- 基於jsp和servlet簡單的java web開發(idea)JSServletJavaWebIdea
- 使用Eclipse快速開發JSPEclipseJS
- Java SE之反射技術[Class,Field](一)Java反射
- Java 技術之類載入機制Java
- 嵌入式需要掌握哪些技術?
- 全方位掌握OpenStack技術知識
- 如何掌握C#的核心技術C#
- 怎樣才能快速掌握ps技術
- 容器技術之發展簡史
- Android開發基礎07-掌握Java語言AndroidJava
- 2020年最流行的Java開發技術,最為主流的技術與工具你懂嗎?Java
- java框架基礎技術之--------反射機制Java框架反射
- 長沙java培訓哪家好?Java開發這些技術你的懂Java