1. 知識點javascript
1) JSP頁面代碼的載入順序和執行html
a) 當客戶第一次請求JSP頁面時,JSP引擎會經過預處理把JSP文件中的靜態數據(HTML)和動態數據(Java腳本)全 java
部轉換爲Java代碼。這個轉換工做其實是很是直觀的,對於HTML文本只是簡單地用out.pringln()方法包裹起來,ajax
對於Java腳本只是保留或簡單地處理。瀏覽器
b) JSP引擎把生成的.java文件編譯成Servlet類文件(.class)。對於Tomcat服務器而言,生成的類文件默認的狀況下存放服務器
在<Tomcat>\work目錄。異步
c) 編譯後的class對象被加載到容器中,並根據用戶的請求生成HTML格式的響應頁面。jsp
在執行JSP頁面時,一般可分爲兩個時期:轉譯時期(Translation Time)和請求時期(Request Time)。在轉譯時期,JSP網頁被轉譯成Servlet類,而後被編譯成類文件;在請求時期,Servlet類執行後,響應結果至客戶端。ide
2. JSP頁面中的代碼加載執行順序函數
1) java是在服務器端運行的代碼,jsp在服務器的servlet裏運行,而javascript和html都是在瀏覽器端運
行的代碼。因此加載執行順序是java>jsp>js
2) js在jsp中的加載順序
頁面上的js代碼是html代碼的一部分,因此頁面加載的時候是由上而下加載。因此js加載的順序也就是
頁面中<script>標籤出現的順序。<script>標籤裏面的或者是引入的外部js文件的執行順序都是其語
語句出現的順序,其中js執行的過程也是頁面裝載的一部分
3) 在js腳本中定義的全局變量和函數,均可以在後面的腳本中調用。
變量的調用,必須是前面已經聲明瞭的,不然變量返回的值是undefined。同一段腳本中,函數定義
能夠出如今函數的調用後面;若函數的定義和調用在兩個腳本段中,函數調用在函數定義以前就會報
函數未定義錯誤。
4) js中出現ajax的異步加載
因爲ajax的異步加載可能會致使語句的執行順序並非按照語句的出現順序執行的。例如,在頁面初
始加載的時候須要向jsp發送請求來得到該頁面所需的數據,在ajax成功函數中,對data的操做所需的
時間過長,就會致使在ajax函數外面的confirm與loadTree比data操做後面的語句先執行。最終在
loadTree中使用data的值的時候就爲空,此時全局變量openTab_Id就爲空。
5) 控制js執行順序
可使用setTimeout(function(),time);來使function延遲加載。
6) js腳本必須放在head或body裏面,否則提示invalid location of tag(script)