2015-01-04 20 views
0

嗨我寫我的JavaScript代碼在我的jsp頁面,我打電話給我的jsp通過java連接url,它正在正確執行,但跳過我已經調用頁面加載時的JavaScript函數。 我無法理解它爲什麼不執行我的JavaScript。如何通過java連接url執行jsp的javascript?

try { 
    URL myURL = new URL("http:localhost:8080/Approval.jsp?empCode=123&compCode=A"); 
    URLConnection myURLConnection = myURL.openConnection(); 
    myURLConnection.connect(); 
} 
catch (IOException e) { 

} 

是否有任何通過連接url直接調用JavaScript?請建議?

+0

'URLConnection'不是瀏覽器,它只是下載給定的URL。它不執行任何操作。 – Todd 2015-01-04 14:48:48

+0

您的Jsp中存在一些問題。您可以解釋您在JSP中執行的操作。 – Prashant 2015-01-04 14:49:59

+0

@Todd我從URL傳遞值,並在我的javascript函數中使用這些值。是否有任何其他方式可以做到這一點? – user1976940 2015-01-04 14:54:01

回答

0

在網絡環境中,JavaScript通常作爲HTML網頁的一部分包含在內,並且僅在該上下文中執行。網絡瀏覽器通常會這樣做;他們內置瞭解析源代碼的HTML和JavaScript(以及CSS等)解析器,以及在網頁上下文中執行JavaScript的內置JavaScript引擎。

Java URLConnection抽象不是Web瀏覽器,對HTML和JavaScript一無所知;它僅支持向URL發送請求並從URL接收響應。而且,它本身並沒有這樣做,因爲它的方法是抽象的;它依賴於一個(更多)具體的子類來知道如何使用特定的協議來完成這些工作。在你的情況下,這將是HttpURLConnection,因爲你的URL使用HTTP協議。

HttpURLConnection增加了某些HTTP功能的特定知識,例如HTTP狀態代碼,但它仍然對HTML和JavaScript一無所知。因此,最終的結果是,雖然您的代碼將在構建網頁時正確接收由JSP生成的所有HTML和JavaScript,但它將無法解析或執行它;它基本上是純文本,就HttpURLConnection而言。

您正在尋找的是Java的無頭(無GUI)瀏覽器庫。我會推薦HtmlUnit(http://htmlunit.sourceforge.net/),這是非常廣泛使用和穩定,可以做很多事情,包括執行JavaScript。