我实际上阅读了关于servlet的教程,我看到了两种不同的方法在servlet中包含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 for your advice ...
答案 0 :(得分:5)
<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>");
答案 1 :(得分:4)
当我们使用RequestDispatcher
时,我们实际上是从服务器请求所述JS文件,然后我们将其嵌入到响应文档中。
另一方面,嵌入标记将指向浏览器向服务器发出此类请求。我想这两种方法至少可以在99%的时间内获取相同的结果,如果你的文件在不同的服务器上。
另一方面,如果它在同一台服务器上,我认为RequestDispatcher会更快。
服务器端缓存将有助于第一种方法,而客户端方面则有助于其他方法。