在java servlet中包含javascript的最佳方式

J-H*_*J-H 7 javascript java servlets

我实际上阅读了一个关于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>");
Run Code Online (Sandbox Code Playgroud)

和另一个可能性:

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

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

thx为您的建议..

art*_*ika 5

<script language="text/javascript" src="functions.js">
Run Code Online (Sandbox Code Playgroud)

在这种情况下,浏览器可以缓存脚本,如果内容没有更改,它将不会加载到下一页加载.缓存资源可节省页面加载和网络流量的时间.是否在servlet或jsp中使用此代码段并不重要.

顺便说一下,你的第一种包含脚本的方法有一个错误.*.js文件通常只包含javascript代码,没有标记,所以你应该在包含functions.js的内容之后在脚本标记之前和之后添加开始脚本标记:

out.println("<script type='text/javascript'>");
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/javascript/functions.js");
out.println("</script>");
Run Code Online (Sandbox Code Playgroud)


mih*_*the 5

当我们使用 时RequestDispatcher,我们实际上是向服务器发出对所述 JS 文件的请求,然后将其嵌入到响应文档中。

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

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

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