【问题标题】:Saving a resource (image etc) relative to application root and using it back in a Servlet / Jsp保存相对于应用程序根的资源(图像等)并在 Servlet / Jsp 中使用它
【发布时间】:2011-09-14 11:56:52
【问题描述】:

我有这个用例,我在 servlet 的 getPost 方法中生成图像。 我将图像保存在 /tmp/xyz.jpg 的本地文件系统中,然后执行类似

的操作
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<title>Example</title>");
out.println("<body><h2>Graph is :</h2>");
out.println("<img src='/tmp/TimeSeriesChart.jpg'></body>");
out.println("</html>");  

当我点击 URL(调用 servlet)时,图像自然不会显示。

我认为的原因是 img src 是针对应用程序的根而不是文件系统的根进行计算的。

总而言之,我希望能够将图像保存在相对于 Application Root 的适当位置,访问图像并显示它。

第一季度。如何在 servlet 中找到应用程序根目录。以便我可以正确保存图像。

第二季度。建议将内容设置为图像,然后将其读取为字节并显示: http://www.exampledepot.com/egs/javax.servlet/GetImage.html

【问题讨论】:

  • 同时我正在尝试第二种方式,如果 servlet 上下文对我有帮助:)

标签: jsp web-applications servlets root


【解决方案1】:

Ans1:ServletContext.getRealPath() 将为您提供应用根目录。

Ans2:拥有 servlet 并没有错,但是 Container 这样做也可以处理以下情况:

  1. If-Modified-Since,发送 SC_NOT_MODIFIED 响应
  2. 在容器中缓存图像数据以供后续请求。

【讨论】:

  • 谢谢我尝试了第二种方法(转换为字节并将内容类型设置为图像),它就像一个魅力。我现在就试试你的
  • 你的也有效,这是最好的方法:)。我用String path = this.getServletContext().getRealPath("");fileName = path + "TimeSeriesChart.jpg" 然后使用 '' ** 不要使用 。 src 将计算相对于 root 的每个路径,因此只需要文件名
猜你喜欢
  • 2013-05-10
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
相关资源
最近更新 更多