java - 在JSP中显示带有绝对路径的图像

标签 java image jsp path jetty

我正在使用 Java、JSP 和 Jetty 开发一个网站。

我在 <img> 的 src 中传递的图像路径遇到一些问题标签。

在我的数据库中,我有用户图像的 Linux 绝对路径。我获取这个值并将其放入“src”属性中。

我有路径,例如:

  • /home/website/images/image1.png

这样一来,图像就不会出现了。 想了很久,我得出的结论是,这是很自然的,因为我从未在任何网站图像中看到过这样的路径到操作系统的绝对路径。

我需要知道的是我必须做什么?

我必须改变 Jetty 的配置吗? 我必须用 Java 运行一些代码吗?

通过谷歌搜索,我变得更加困惑。我想要一个解释。


更新(2013年3月26日)

我找到了解决这个问题的方法:

http://balusc.blogspot.com.br/2007/04/imageservlet.html

谢谢BalusC!哈哈哈哈哈

最佳答案

确实,<img src>必须引用公共(public) Web URL,而不是本地磁盘文件系统路径。您的图像必须可通过 HTTP 请求获取。即网络浏览器必须下载它们,而不是网络服务器必须以某种方式包含它们。

对于初学者来说,最直接的方法是创建一个 servlet,以 InputStream 形式获取图像内容。通过FileInputStream基于请求参数或路径信息,然后以通常的Java IO方式将其写入OutputStream HttpServletResponse的,在设置必要的 HTTP 响应 header 以便浏览器了解如何处理它之后。

例如,假设 servlet 映射到 /images/*然后您将图像打开为 http://example.com/contextpath/images/image1.png :

String filename = request.getPathInfo();
File file = new File("/home/website/images", filename);

response.setHeader("Content-Type", getServletContext().getMimeType(filename));
response.setHeader("Content-Length", String.valueOf(file.length()));

InputStream input = new FileInputStream(file);
OutputStream output = response.getOutputStream();
// Stream bytes the usual way.

另一种方法是添加 /home/website/images作为服务器的新 Web 应用程序上下文,上下文路径为 /images 。这样图像就可以通过 http://example.com/images/image1.png 获得。您只依赖于 servletcontainer make/version 如何配置它以及您是否对其具有完全的管理控制权。对于 Jetty,如果您以编程方式管理它,则如下所示:

server.setHandler(new WebAppContext("/home/webapp/images", "/images"));

或者当您通过 XML 管理它时:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="resourceBase">/home/website/images</Set>
    <Set name="contextPath">/images</Set>
</Configure>

关于java - 在JSP中显示带有绝对路径的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509192/

相关文章:

java - 在 Java ArrayList 中删除对象 - 耗时

java - 带有 ExtJS 的 IIS 服务器前端客户端无法向 Java 后端服务器应用程序请求(Store.load)

java - 如何使用java识别图像中的字符?

java - 如何动态地将arraylist放入Hashmap中?

java - 无法使用 java 的凭据访问网页

java - 如何在java中一次合并两个java对象列表

java - 如何检查并防止更改 JTabbedPane 上的选项卡?

image - 位图文件的哪一部分是元数据?

android - 为什么 getBitmap 方法不起作用?

jquery - 文件上传后如何隐藏上传按钮?