7

我实际上阅读了有关 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">");
...

使用调度程序或直接包含有什么区别?什么是更好的解决方案?

谢谢你的建议..

4

2 回答 2

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

在这种情况下,浏览器可以缓存脚本,如果它的内容没有改变,它不会在下一页加载时加载。缓存资源可以节省页面加载和网络流量的时间。无论您在 servlet 还是 jsp 中使用此代码段都没有关系。

顺便说一句,您第一种包含脚本的方式存在错误。*.js 文件通常只包含 javascript 代码,没有标记,因此您应该在包含 functions.js 的内容之前添加开始脚本标记和结束脚本标记:

out.println("<script type='text/javascript'>");
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/javascript/functions.js");
out.println("</script>");
于 2012-10-29T15:19:05.667 回答
4

当我们使用 .js 时RequestDispatcher,我们实际上是从服务器请求该 JS 文件,然后我们将其嵌入到响应文档中。

另一方面,嵌入标签将使浏览器向服务器发出这样的请求。如果您的文件位于不同的服务器上,我猜这两种方法至少在 99% 的时间都将获取相同的结果。

另一方面,如果在同一台服务器上,我认为 RequestDispatcher 会更快。

服务器端缓存将有助于第一种方法和客户端的另一种方法。

于 2012-10-29T15:23:19.933 回答