溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JSP中的代碼加載順序

發(fā)布時(shí)間:2020-08-11 12:46:12 來源:網(wǎng)絡(luò) 閱讀:2457 作者:guxianyang 欄目:開發(fā)技術(shù)

1. 知識(shí)點(diǎn)

1) JSP頁(yè)面代碼的載入順序和執(zhí)行

a) 當(dāng)客戶第一次請(qǐng)求JSP頁(yè)面時(shí),JSP引擎會(huì)通過預(yù)處理把JSP文件中的靜態(tài)數(shù)據(jù)(HTML)和動(dòng)態(tài)數(shù)據(jù)(Java腳本)全

    部轉(zhuǎn)換為Java代碼。這個(gè)轉(zhuǎn)換工作實(shí)際上是非常直觀的,對(duì)于HTML文本只是簡(jiǎn)單地用out.pringln()方法包裹起來,

    對(duì)于Java腳本只是保留或簡(jiǎn)單地處理。

b) JSP引擎把生成的.java文件編譯成Servlet類文件(.class)。對(duì)于Tomcat服務(wù)器而言,生成的類文件默認(rèn)的情況下存放

    在<Tomcat>\work目錄。

c) 編譯后的class對(duì)象被加載到容器中,并根據(jù)用戶的請(qǐng)求生成HTML格式的響應(yīng)頁(yè)面。

在執(zhí)行JSP頁(yè)面時(shí),通常可分為兩個(gè)時(shí)期:轉(zhuǎn)譯時(shí)期(Translation Time)和請(qǐng)求時(shí)期(Request Time)。在轉(zhuǎn)譯時(shí)期,JSP網(wǎng)頁(yè)被轉(zhuǎn)譯成Servlet類,然后被編譯成類文件;在請(qǐng)求時(shí)期,Servlet類執(zhí)行后,響應(yīng)結(jié)果至客戶端。

2. JSP頁(yè)面中的代碼加載執(zhí)行順序

1) java是在服務(wù)器端運(yùn)行的代碼,jsp在服務(wù)器的servlet里運(yùn)行,而javascript和html都是在瀏覽器端運(yùn)

    行的代碼。所以加載執(zhí)行順序是java>jsp>js

2) js在jsp中的加載順序

    頁(yè)面上的js代碼是html代碼的一部分,所以頁(yè)面加載的時(shí)候是由上而下加載。所以js加載的順序也就是

    頁(yè)面中<script>標(biāo)簽出現(xiàn)的順序。<script>標(biāo)簽里面的或者是引入的外部js文件的執(zhí)行順序都是其語(yǔ)

    語(yǔ)句出現(xiàn)的順序,其中js執(zhí)行的過程也是頁(yè)面裝載的一部分

3) 在js腳本中定義的全局變量和函數(shù),都可以在后面的腳本中調(diào)用。

    變量的調(diào)用,必須是前面已經(jīng)聲明了的,否則變量返回的值是undefined。同一段腳本中,函數(shù)定義

    可以出現(xiàn)在函數(shù)的調(diào)用后面;若函數(shù)的定義和調(diào)用在兩個(gè)腳本段中,函數(shù)調(diào)用在函數(shù)定義之前就會(huì)報(bào)

    函數(shù)未定義錯(cuò)誤。

4) js中出現(xiàn)ajax的異步加載

    由于ajax的異步加載可能會(huì)導(dǎo)致語(yǔ)句的執(zhí)行順序并不是按照語(yǔ)句的出現(xiàn)順序執(zhí)行的。例如,在頁(yè)面初

    始加載的時(shí)候需要向jsp發(fā)送請(qǐng)求來獲得該頁(yè)面所需的數(shù)據(jù),在ajax成功函數(shù)中,對(duì)data的操作所需的

    時(shí)間過長(zhǎng),就會(huì)導(dǎo)致在ajax函數(shù)外面的confirm與loadTree比data操作后面的語(yǔ)句先執(zhí)行。最終在

    loadTree中使用data的值的時(shí)候就為空,此時(shí)全局變量openTab_Id就為空。

5) 控制js執(zhí)行順序

    可以使用setTimeout(function(),time);來使function延遲加載。

6) js腳本必須放在head或body里面,不然提示invalid location of tag(script)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI