java - 使用 servlet 从 Web 根文件夹外部的文件夹中检索图像

标签 java jsp servlets servlet-3.0

我正在尝试创建一个小型 servlet,用于上传图像并能够在不同页面中以幻灯片形式检索它们。

我可以将它们保存在 WebApp 文件夹之外,但是在检索它们时,我需要它们成为 JSP 的一部分,JSP 中除了图像之外还有其他内容。目前,我正在使用 BufferedImage 和 ImageIO 类一次传输一张图像。

BufferedImage image = ImageIO.read(new File("D:\\"+file.getName()));
ImageIO.write(image, "jpg", response.getOutputStream());

在代码的前面已检查该文件是否为 JPEG 文件类型。

最佳答案

您需要了解 HTTP 和 HTML 的工作原理:

  1. 浏览器请求 HTML 页面(第一个请求)
  2. 服务器发回 HTML(且仅限 HTML),包含 3 <img src="..."/>标签
  3. 浏览器发送请求以获取第一个图像的字节(第二个请求)
  4. 服务器发回第一张图像的字节
  5. 浏览器发送请求以获取第二个图像的字节(第三个请求)
  6. 服务器发回第二张图像的字节
  7. 浏览器发送请求以获取第三个图像的字节(第四个请求)
  8. 服务器发回第三张图像的字节

因此,您需要一个 servlet 或 JSP 来生成 HTML 页面,其中包含所有 <img src="..."/>标签。每个标签都应具有以下形式:

<img src="imageServlet?imageId=564"/>

您需要第二个 servlet,映射到 imageServlet ,它读取 imageId 标识的图像字节来自文件系统的参数值,并将这些字节写入响应输出流。

关于java - 使用 servlet 从 Web 根文件夹外部的文件夹中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013300/

相关文章:

java - JSON 上的 for 循环出现问题

java - 本地运行存储在服务器上的 java 类

java - 如果玩!自动为每个请求启动一个事务并管理它,为什么在方法上放置@Transactional?

java - 在jsp文件中导入java类时出错

java - 服务程序 : OutOfMemory Error

java - 如何使用变量名正确绘制矩形

javascript - 如何将 JavaScript 变量从一个 JSP 页面传递到另一个 JSP 页面

java - 属性文件不起作用

java - 如何将参数从过滤器发送到 Controller ?

java - 如何从oracle sql中检索图像并将其显示在jsp页面中?