2012-10-29 52 views
7

我實際上閱讀了關於servlets的教程,並且我看到了兩種不同的方式將javascript包含在servlet中。在java servlets中包含javascript的最佳方式

out.println("<html><head>"); 

    RequestDispatcher dispatcher = request.getRequestDispatcher(
     "/WEB-INF/javascript/functions.js"); 

    dispatcher.include(request, response); 

    out.println("<title>Client Forms</title></head><body>"); 

和其他方法可行:

out.println("<html><head>"); 
out.println("<script language="text/javascript" src="functions.js">"); 
... 

就是使用調度員或直接包括有什麼區別?什麼是更好的解決方案?

THX爲你的意見..

+7

最好的方法是使用JSP的而不是servlets! – invariant

+1

最新優勢是什麼? –

+1

Servlet = html代碼,JSP = HTML代碼,以供快速參考:http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp – invariant

回答

4

當我們使用RequestDispatcher,我們實際上是在做來自服務器的所述JS文件的請求,然後我們將它嵌入到響應文檔中。

另一方面,嵌入標籤將指向瀏覽器向服務器發出這樣的請求。我想這兩種方法都會在99%的時間內獲取相同的結果,至少如果您的文件位於不同的服務器上。另一方面,如果它在同一臺服務器上,我認爲RequestDispatcher會更快。

服務器端緩存將有助於第一種方法和客戶端在其他方法。

4
<script language="text/javascript" src="functions.js"> 

在這種情況下,瀏覽器可以緩存腳本,如果它的內容haven't changed它不會在下一個頁面加載加載。緩存資源可節省頁面加載和網絡流量的時間。無論您在servlet還是jsp中使用此片段都無關緊要。

順便說一句,包含腳本的第一種方式存在一個錯誤。 * .js文件通常只包含JavaScript代碼,標記內部消除,所以你應該添加之前打開腳本標籤和包括functions.js的內容後,關閉腳本標籤:

out.println("<script type='text/javascript'>"); 
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/javascript/functions.js"); 
out.println("</script>"); 
相關問題