久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > Java視頻教程之JSP動態網頁編程技術原理分享

Java視頻教程之JSP動態網頁編程技術原理分享

發布人:扣丁學習 時間:2020-11-30 來源:工程師 發布文章

  一、jsp概述


  1、關于jsp


  JavaServerPages簡稱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)jav代碼會被作為程序的一部分來執行,而不會被翻譯成out.write(),這是常用的。


  2)會被翻譯成out.print(java代碼)


  3)聲明成員變量。


  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(Stringkey,Objectvalue);


  getAttribute(Stringkey);


  removeAttribute(Stringkey);


  向其他域對象中操作數據.


  pageContext.setAttribute(Stringkey,Objectvalue,intscope);向其他域對象中存值


  pageContext.getAttribute(Stringkey,intscope);向其他域對象中取值


  pageContext.removeAttribute(Stringkey,intscope);向其他域對象中移除值


  intscope來自于PageContext類的常量


  REQUEST_SCOPE:表示request域


  SESSION_SCOPE:表示session域


  APPLICATION_SCOPE:表示application域


  findAttribute(Stringkey):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信息的同學可以前往扣丁學堂官網咨詢,扣丁學堂JavaEE培訓深受學員的喜愛。扣丁學堂不僅有專業的老師和與時俱進的課程體系,還有大量的Java視頻教程供學員觀看學習哦。扣丁學堂Java技術交流群:850353792。

*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞:

相關推薦

技術專區

關閉