使用 HTML 的 out.print 时如何打印资源的正确路径

bob*_*bby 0 java servlets

我是 java 新手,正在尝试通过 html servlet 从文件路径添加图像“space.gif”。

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
{              
  response.setContentType("text/html");

  PrintWriter out = response.getWriter();

  out.print("<HTML>");
  out.print("<HEAD><TITLE>Upload Image</TITLE></HEAD>");
  out.print("<BODY>");

  out.print("<img src='space.gif' alt='image' />");

  out.print("</BODY>");
  out.print("</HTML>");
  out.close();
}
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

如果您将其放在space.gif公共 Web 内容中的正确位置并通过正确的 URL 引用它,那么它就会正常工作。正如您现在所看到的,它的位置取决于调用 servlet 所使用的 URL。基本上,它实际上应该与 servlet 位于同一文件夹中。

这个例子应该做:

WebContent
 |-- images
 |    `-- space.gif
 `-- WEB-INF
      |-- classes
      `-- lib
Run Code Online (Sandbox Code Playgroud)

out.print("<img src='" + request.getContextPath() + "/images/space.gif' alt='image' />");
Run Code Online (Sandbox Code Playgroud)

或者,如果该图像实际上位于公共 Web 内容之外,并且由于某些不明显的原因而无法将其移动到公共 Web 内容中,那么您需要在服务器配置中添加一个指向该文件夹的额外 Web 应用程序上下文,例如/images,这样你就可以做

out.print("<img src='/images/space.gif' alt='image' />");
Run Code Online (Sandbox Code Playgroud)

也可以看看:


与具体问题无关, HTML 属于JSP,而不属于Servlet