无法显示在 JSP 页面中上传的图片,但在浏览器地址栏中输入 url 时会显示

Can't display image uploaded in JSP page but it shows when the url is typed in the browser's address bar

我的 web Java 项目 servlets/jsp 可以上传图片(甚至认为这不是最好的方法),但是当我尝试在 table 中显示图片时(使用 JSTL ),只有一张空白图片,例如图片的 url 已损坏。但是当我复制 url 图像并粘贴到浏览器的地址栏时,图像会按预期显示。 url 是这样的:

file:///c:/Users/user/Documents/NetBeansProjects/Project1/target/Project-1.0-SNAPSHOT//images/image1.png

JSP 页面是这样设置的:

<img src="<c:out value="${requestScope.path}" /><c:out value="${test.image}" />" />

提前致谢!

当您在浏览器的地址栏中输入带有文件协议的 URL 时,您的浏览器会向您的操作系统询问该文件。当您将相同的 URL 放入 HTML 页面上的 img 标记时,浏览器现在会对该文件发出 HTTP 请求。但是,无法通过 Internet 访问该文件。为了做想做的事,你必须有一个 Servlet 从文件系统中读取文件,然后把它放入一个 HTTP 响应中,当浏览器请求图像时可以发送该响应。这是演示代码。

package rick;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
@WebServlet("/serveImage")
public class ServeImage extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/jpeg");
        FileInputStream fis = new FileInputStream("C:/Users/rick/Documents/RickProfile.jpeg");
        fis.transferTo(response.getOutputStream());
    }
} 

并使用像

这样的 img 标签请求它
  <img src="serveImage" />