整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          你知道的不一定是最好的,Java學(xué)習(xí)JSP知識(shí)點(diǎn)總結(jié)

          、JSP的本質(zhì)就是servlet.

          JSP運(yùn)行規(guī)則:先轉(zhuǎn)化成Java文件,然后編譯成class文件,最后才可以執(zhí)行。

          了解了servlet之后,好多JSP的知識(shí)可以從JSP翻譯后的Java文件中看出。

          JSP頁(yè)面轉(zhuǎn)化為Java文件后所在的位置:

          Eclipse的工作目錄下的

          .metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Demo0808\org\apache\jsp

          二、JSP中的Java代碼段

          介紹下我自己的Java學(xué)習(xí)群:548511899,不管你是小白還是大牛,小編我都挺歡迎,不定期分享干貨,包括我自己整理的一份2017最新的Java資料和零基礎(chǔ)到學(xué)成出山的全套教程,歡迎所有喜歡Java的小伙伴。

          JSP中的代碼片段,翻譯到Servlet的方法中,所以可以寫Java方法中允許的代碼,

          不能寫訪問標(biāo)識(shí)符等在方法中都不允許的代碼。

          腳本中的代碼要保持結(jié)構(gòu)完整,可以分開寫到兩個(gè)腳本中,比如:

          <% for(int I = 0; I < 10; I ++){ %> hello <% } %>

          Java片段翻譯為Servlet的時(shí)候是按照從上向下的順序的。

          三、JSP注釋

          JSP注釋:在JSP源碼界面可見,Java文件中不可見,頁(yè)面源碼中不可見。

          HTML注釋:在各個(gè)界面都可見。

          Java注釋,只有在頁(yè)面源碼中不可見

          四、JSP指令

          1.page指令

          • language屬性:指示當(dāng)前的JSP頁(yè)面會(huì)被翻譯成何種語(yǔ)言。

          • ContentType:指定瀏覽器的編碼方式,瀏覽器使用。

          • pageEncoding:指定當(dāng)前頁(yè)面的編碼方式,供瀏覽器使用。

          • autoFlush:是否自動(dòng)刷新,默認(rèn)true.

          • errorPage:當(dāng)前頁(yè)面發(fā)生錯(cuò)誤后,轉(zhuǎn)發(fā)到的頁(yè)面,地址欄不變化。

          • buffer:緩沖的大小

          • isErrorPage:指定當(dāng)前頁(yè)面是否為錯(cuò)誤頁(yè)面,默認(rèn)是false,此時(shí)內(nèi)置對(duì)象Exception不可用。true的時(shí)候才可以使用。

          • isELIgnored:是否忽略El表達(dá)式,默認(rèn)不忽略。

          2.include靜態(tài)加載。

          被包含頁(yè)面的代碼完全加到目標(biāo)頁(yè)面中,轉(zhuǎn)化為Java文件的時(shí)候只轉(zhuǎn)化目標(biāo)頁(yè)面,被包含頁(yè)面在Java文件中也有輸出。

          file屬性

          五、JSP動(dòng)作標(biāo)簽

          最終會(huì)被翻譯成Java代碼執(zhí)行。(Java學(xué)習(xí)交流群 548511899)

          1.forword標(biāo)簽:

          只有page屬性。此時(shí)路徑是相對(duì)于服務(wù)器端的。轉(zhuǎn)發(fā)。 這個(gè)標(biāo)簽可以訪問WEB-INF目錄下的文件 不帶參數(shù)其實(shí)標(biāo)簽和結(jié)束標(biāo)簽不可以分開。 可以通過param傳遞參數(shù)。

          2.include標(biāo)簽:

          和指令相比,為動(dòng)態(tài)包含,被包含界面和杰界面都生成Java文件和class文件

          3.tablib標(biāo)簽

          引入jstl時(shí)使用

          六、web的四大域?qū)ο螅?/h1>

          pageContext(page域):作用范圍是整個(gè)JSP頁(yè)面,是四大作用域中最小的一個(gè);生命周期是當(dāng)對(duì)JSP的請(qǐng)求時(shí)開始,當(dāng)響應(yīng)結(jié)束時(shí)銷毀。

          Request:作用范圍是整個(gè)請(qǐng)求鏈(請(qǐng)求轉(zhuǎn)發(fā)也存在);生命周期是在service方法調(diào)用前由服務(wù)器創(chuàng)建,傳入service方法。整個(gè)請(qǐng)求結(jié)束,request生命結(jié)束。

          Session:作用范圍是一次會(huì)話。

          servletContext(application域):作用范圍是整個(gè)Web應(yīng)用。當(dāng)Web應(yīng)用被加載進(jìn)容器時(shí)創(chuàng)建代表整個(gè)web應(yīng)用的ServletContext對(duì)象,當(dāng)服務(wù)器關(guān)閉或Web應(yīng)用被移除時(shí),ServletContext對(duì)象跟著銷毀。

          四個(gè)域的作用域范圍大小:PageContext (page域) < request < session < servletContext(application域)

          sp

          1 什么是JSP

          Java Server Pages : Java服務(wù)器端頁(yè)面,也和Servlet一樣,用于動(dòng)態(tài)web技術(shù)!

          最大的特點(diǎn):

          寫Jsp就像寫HTML

          區(qū)別:

          HTML只給用戶提供靜態(tài)的數(shù)據(jù)

          JSP頁(yè)面中可以嵌套Java代碼,為用戶提供動(dòng)態(tài)數(shù)據(jù)

          2 jSP原理

          思路: JSP到底怎么執(zhí)行的!

          代碼層面沒有任何問題

          服務(wù)器內(nèi)部 工作

          tomcat 中有一個(gè)work目錄

          idea中使用tomcat會(huì)在idea中產(chǎn)生一個(gè)work目錄

          這個(gè)是 idea tomcat的工作空間

          路徑:

          瀏覽器向服務(wù)器發(fā)送請(qǐng)求,不管訪問什么資源,起始都是在訪問Servlet

          JSP最終也會(huì)被轉(zhuǎn)換成為一個(gè)Java類

          JSP本質(zhì)上就是一個(gè)Servlet

          1.判斷請(qǐng)求

          2.內(nèi)置對(duì)象

          3.輸出頁(yè)面前增加的代碼

          以上的這些個(gè)對(duì)象我們可以在JSP頁(yè)面中直接使用

          jsp原理圖

          在JSP頁(yè)面中;

          只要是Java代碼就會(huì)原封不動(dòng)的輸出

          如果是HTML代碼,就會(huì)被轉(zhuǎn)換

          這樣的格式,輸出到前端

          3 JSP基礎(chǔ)語(yǔ)法

          任何語(yǔ)言都有自己的語(yǔ)法,Java中有,JSP作為Java技術(shù)的一種應(yīng)用,它擁有一些自己的擴(kuò)容的語(yǔ)法,Java所有語(yǔ)法都支持

          JSP表達(dá)式

          述(最多18字

          jsp 腳本片段

          腳本片段的實(shí)現(xiàn)

          JSP聲明

          JSP聲明: 會(huì)被編譯到JSP生成Java類中! 其他的,就會(huì)被生成到 _jspService 方法中

          在JSP中嵌入Java代碼即可

          jsp的注釋,不會(huì)在客戶端顯示,HTML就會(huì)

          4 JSP指令

          總結(jié):

          在實(shí)際開發(fā)中建議使用 下面 jsp:include/的方式

          如果使用上面那一種的話 如果在header.jsp或者在footer.jsp中聲明了 int a=1; 又在當(dāng)前jsp中聲明了相同的變量 在jsp頁(yè)面不會(huì)報(bào)錯(cuò),去了瀏覽器里面 就報(bào)錯(cuò)了。

          所以建議使用 jsp標(biāo)簽 進(jìn)行頁(yè)面拼接

          5 九大內(nèi)置對(duì)象

          >PageContext 存東西

          >Request 存東西

          >Response

          >Session 存東西

          >Application 【ServletContext 】 存東西

          >config 【ServletConfig】

          >out

          >page

          >exception

          equest:客戶端向服務(wù)器發(fā)送請(qǐng)求,產(chǎn)生的數(shù)據(jù),用戶看完了就沒作用了,比如:新聞 用戶看完了沒作用了。

          session:客戶端向服務(wù)器發(fā)送請(qǐng)求,產(chǎn)生的數(shù)據(jù),用戶用完了一會(huì)還有用,比如:購(gòu)物車;

          application:客戶端向服務(wù)器發(fā)送請(qǐng)求,產(chǎn)生的數(shù)據(jù),一個(gè)用戶用完了,其他用戶還可能使用:比如:聊天數(shù)據(jù)

          6 JSP標(biāo)簽 JSTL標(biāo)簽 EL表達(dá)式

          開始之前導(dǎo)入所學(xué)的依賴

          EL表達(dá)式: ${ }

          >獲取數(shù)據(jù)

          >執(zhí)行運(yùn)算

          >獲取web開發(fā)的常用對(duì)象

          JSP 標(biāo)簽

          發(fā)送:

          接收:

          JSTL 表達(dá)式

          JSTL表達(dá)式的使用就是為了彌補(bǔ)HTML標(biāo)簽的不足;它自定義許多標(biāo)簽,供我們使用,標(biāo)簽的功能和Java代碼一樣

          核心標(biāo)簽

          JSTL 標(biāo)簽庫(kù)使用步驟

          引入對(duì)應(yīng)的taglib

          使用其中的方法

          在Tomcat也需要引入jstl的包,否則會(huì)報(bào)錯(cuò)

          c:if

          c:choose c:when

          c:forEach

          天千鋒廣州小編就給大家分享零基礎(chǔ)如何掌握J(rèn)SP技術(shù),下面一起來看看吧!

          一、Java初級(jí)開發(fā)之jsp概述

          1.關(guān)于jsp

          JavaServer Pages簡(jiǎn)稱jsp,從“server”這個(gè)詞可以看出,這其實(shí)也是一門java服務(wù)端技術(shù),其實(shí)可以簡(jiǎn)單的把jsp認(rèn)為是servlet,一點(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頁(yè)面翻譯成一個(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頁(yè)面將被翻譯成servlet

          3.jsp與servlet的選擇

          jsp就是servlet,那么如果碰到需要寫繁多的html代碼,建議使用jsp,如果需要寫繁多的java代碼,建議使用servlet。

          ?二、JSP技術(shù)詳解

          1.JSP腳本

          就是怎樣在jsp頁(yè)面中使用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頁(yè)面時(shí)才看得到。

          2.三大指令

          1)page指令

          page指令是用于告訴服務(wù)器該如何翻譯此jsp頁(yè)面。通過page指令的屬性來指明翻譯的效果。

          · language: 指的是jsp頁(yè)面支持哪種語(yǔ)言,只支持java,所以該屬性可以省略

          · pageEncoding和contentType寫一個(gè)就行,建議使用pageEncoding,更加簡(jiǎn)單

          · session:默認(rèn)值是true,默認(rèn)情況下服務(wù)器會(huì)為該頁(yè)面開辟一個(gè)session空間

          · import:用于導(dǎo)入該頁(yè)面中的java類需要用到的包

          · errorPage:當(dāng)發(fā)生錯(cuò)誤時(shí)跳轉(zhuǎn)到的資源,注意,該地址是一個(gè)服務(wù)器地址。

          · isErrorPage:默認(rèn)值是false。當(dāng)在web.xml中配置錯(cuò)誤頁(yè)面時(shí),需要將該jsp頁(yè)面的isErrorPage設(shè)為true.

          404

          /error.jsp

          總結(jié):一般情況下,page指令就這么寫即可:

          2)include指令:靜態(tài)包含,file屬性使用的是服務(wù)器地址。

          include指令是用于在一個(gè)jsp頁(yè)面中包含另一個(gè)jsp頁(yè)面,兩個(gè)頁(yè)面組合成一個(gè)頁(yè)面發(fā)送給客戶端。

          所謂的靜態(tài)包含,在翻譯時(shí)是把被包含的jsp頁(yè)面寫給客戶端。那么此時(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(頁(yè)面)

          setAttribute(String key,Object value);

          getAttribute(String key);

          removeAttribute(String key);

          · 向其他域?qū)ο笾胁僮鲾?shù)據(jù).

          pageContext.setAttribute(String key,Object value, int scope);向其他域?qū)ο笾写嬷?/p>

          pageContext.getAttribute(String key, int scope);向其他域?qū)ο笾腥≈?/p>

          pageContext.removeAttribute(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頁(yè)面的腳本中能直接使用的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頁(yè)面的page指令的session屬性為true時(shí),才會(huì)有session對(duì)象

          · request:

          · response

          · exception 當(dāng)jsp頁(yè)面的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è)頁(yè)面中包含另一個(gè)頁(yè)面的內(nèi)容

          和靜態(tài)的區(qū)別:

          靜態(tài)包含會(huì)在翻譯的過程中直接翻譯被包含的頁(yè)面,被包含的頁(yè)面不會(huì)產(chǎn)生java文件。

          而動(dòng)態(tài)包含會(huì)在翻譯的過程中只翻譯自己頁(yè)面的內(nèi)容,被包含的頁(yè)面的翻譯交給相應(yīng)的類來完成,被包含的頁(yè)面會(huì)產(chǎn)生java文件,實(shí)際開發(fā)中更加常用動(dòng)態(tài)包含。

          2)jsp:forward

          請(qǐng)求轉(zhuǎn)發(fā),與servlet中的請(qǐng)求轉(zhuǎn)發(fā)的效果一致。


          主站蜘蛛池模板: 亚洲视频免费一区| 亚洲中文字幕丝袜制服一区 | 国产一区在线mmai| 天码av无码一区二区三区四区| 国偷自产一区二区免费视频| 无码AⅤ精品一区二区三区| 精品无码人妻一区二区三区18 | 97精品国产一区二区三区| 国内国外日产一区二区| 亚洲国产精品一区二区九九| 欧美人妻一区黄a片| 高清精品一区二区三区一区| 少妇特黄A一区二区三区| 国产av一区二区三区日韩 | 一色一伦一区二区三区| 精品无码av一区二区三区| 国产成人一区二区三区在线观看| 精品免费久久久久国产一区| 人妻内射一区二区在线视频| 高清一区二区在线观看| 国产人妖视频一区二区破除| 国产怡春院无码一区二区| 色婷婷香蕉在线一区二区| 国产品无码一区二区三区在线| 中文字幕无线码一区2020青青| 2020天堂中文字幕一区在线观| 亚洲国产综合精品中文第一区| 久久精品一区二区免费看| 日韩好片一区二区在线看| 精品视频无码一区二区三区| 亚洲午夜一区二区三区| 成人精品一区二区不卡视频| 无码aⅴ精品一区二区三区| 濑亚美莉在线视频一区| 男人免费视频一区二区在线观看| 国产伦精品一区二区三区免费迷 | 老熟妇高潮一区二区三区| 日韩一区二区免费视频| 精品综合一区二区三区| 国产精品污WWW一区二区三区| 精品久久国产一区二区三区香蕉|