日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Java开发之掌握JSP技术

發布時間:2024/9/30 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的請求轉發的效果一致。
  
本文來自千鋒教育,轉載請注明出處。

總結

以上是生活随笔為你收集整理的Java开发之掌握JSP技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。