1. 程式人生 > >jsp呼叫其他jsp中的js程式碼

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    jspServletServletrequestreponse    
<%@include    >Servlet    requestreponse

因為包含的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程式碼......

第四階段: