jsp呼叫其他jsp中的js程式碼
前言
在熟悉程式碼時,隨便選了一個按鈕,規則匯出的功能。
在使用F12進行debug時,發現被呼叫的js方法和按鈕不在一個jsp頁面中,感覺很神奇的呼叫了!
正文:
第一階段:
通過F12檢視呼叫的路徑,可以看到被呼叫的方法名。
在程式碼中搜方法名關鍵字可以得到名字叫XXX的Java方法和在B.jsp中呼叫這個方法的js程式碼.
但是B.jsp中並沒有呼叫JS方法的地方。
所以,我再次用搜索方法,在程式碼中搜JS方法,得到和B.jsp同一級目錄的A.jsp檔案。
截至目前,相當於是在一個jsp頁面中呼叫了另外一個jsp中的js程式碼了,我在網上搜索,很明顯,大量的經驗者告訴我們不能在jsp中呼叫另外一個JSP中的js方法。
但是!在index.jsp檔案中有這樣一句程式碼:<jsp:include page="B.jsp"/>,也就是說,B.jsp頁面被包含在A.jsp頁面中。似乎這樣就可以解釋為啥可以在A.jsp中呼叫B.jsp的js方法了。
第二階段:
然而,當我想了解一下include標籤時,看到的是這樣的:
1而對於動態包含<jsp:incude >,如果被包含文件是動態的,那麼就會生成兩個Servlet,也就是被包含文件也要經 過jsp引擎編譯執行生成一個Servlet,兩個Servlet通過request和reponse進行通 信。如果被包含的文件是靜態的,那麼這種情因為包含的jsp頁面並不是靜態的,所以會編譯成兩個servlet檔案,我感覺和其他兩個平常的jsp頁面是一樣的啊!!~
難道是我理解的有問題??
1JSP容器將通過一個內部的函數調用來執行指定的資源.因此 ,這些被引入的資源可以幫助處理本來的請求 ,所以這些資源可以拜訪請求作用域內的全部對象.以及全部本來的請求參數.可以拜訪請求作用域內的全部物件
? 這句話的意思就是可以直接呼叫include jsp中的js方法???
按照上面的想法,生成的兩個servlet之間通訊是通過request和response來進行訊息的傳遞,所以,請求作用域也只是request範圍內的物件吧。
第三階段:
之後,猜想是不是因為JSP在編譯之後有啥不一樣的地方?因為jsp中的東西包括java html 和js程式碼,有可能是這三種的處理方式不一樣。
JSP的生命週期大概就是這個樣子,下面有一個更為詳細的有關jsp生命週期的文章:
然而,看了很多的文章,只是說JSP中是有Java程式碼和html程式碼,並沒有提js,是js預設就是當作html裡面了嗎??......
現在能理解的可能的情況就是,在編譯之後,JS是在前端的程式碼,所以,所有的js程式碼都被放進了html裡面,所以就可以直接呼叫了。
如果是這樣就有了另外一個疑惑,百度“JSP呼叫另外一個jsp的js程式碼”得到的結果都是不可以直接呼叫另外一個jsp裡面的js程式碼......
第四階段: