Java 为什么图像不显示在JSP页面上

Java 为什么图像不显示在JSP页面上,java,image,jsp,servlets,Java,Image,Jsp,Servlets,我对以下场景有点迷茫: 用户上传图像-upload.jsp(多部分/表单数据) servlet执行所有脏作业(保存图像、获取名称、保存名称、重定向到display.jsp) 在display.jsp上,应该显示刚刚上传的图像 不幸的是display.jsp页面是空的。当我在firefox下查看源页面时,一切似乎都很好,提供了指向图像的有效链接 <img src="/UploadTest/avatar/55_445194458350473498.png" border=0 width="48

我对以下场景有点迷茫:

  • 用户上传图像-upload.jsp(多部分/表单数据)
  • servlet执行所有脏作业(保存图像、获取名称、保存名称、重定向到display.jsp)
  • 在display.jsp上,应该显示刚刚上传的图像
  • 不幸的是display.jsp页面是空的。当我在firefox下查看源页面时,一切似乎都很好,提供了指向图像的有效链接

    <img src="/UploadTest/avatar/55_445194458350473498.png" border=0 width="48px" height="48px"/>
    
    以下是用于上传、处理和显示图片的代码:

    upload.jsp

    <form action="Upload" method="post" enctype="multipart/form-data">
      <label for="file">File:</label>
      <input type="file" id="file" name="file">
      <input type="submit" value="submit">
    </form>
    
    display.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
      </head>
      <body>
          <div>
              <img src="${pageContext.request.contextPath}/avatar/${filename}" border=0 width="48px" height="48px"/>
          <div>
      </body>
    </html>
    
    
    JSP页面
    
    如果我将display.jsp中的${filename}替换为之前上载的特定图像的静态名称,则显示没有问题,因此我假设图像处理正确,只是前端缺少一些东西

    顺便说一下:当调试器处于活动状态时,一切正常,但当关闭时,问题又出现了

    干杯


    托马斯

    你能在pic查看器中查看上传的图像吗

    文件大小是否正确,数据是否未损坏

    您的服务器是否在端口8084上运行


    我想知道为什么在应该是image/png的时候输入text/html。

    很好的解释。我仔细研究了你的问题,并创建了一个样本。我有和你一样的问题。 解决方案是在display.jsp文件的下面一行:

    <%@page isELIgnored="false" %>
    
    
    
    我认为EL和page的问题是无法正确评估。 代码如下: upload.jsp和upload.java与您的相同

    display.jsp:

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page isELIgnored="false" %>
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
      </head>
      <body>
          <div>
              <img src="${pageContext.request.contextPath}/images/${filename}" border=0 width="48px" height="48px" alt="Image Not found"/>
          <div>
      </body>
    </html>
    
    
    JSP页面
    
    希望这对你也有用


    谢谢

    上传前和上传后的图像完全正确。我可以在浏览器中看到它们,但只有在实名不是${filename}变量的情况下才能看到。您使用什么调试器?你使用ApacheTomcat吗?@MagnusStrand:这是你的答案吗?我只看到一些评论here@codeMaker:对不起,我还不能使用
    发表评论。无需在注释中使用ContextPath,您有location=“/Users/Thomas/NetBeansProjects/UploadTest/web/avatar”。但是在你的链接中有src=“/UploadTest/avatar/55445194458350473498.png”。那是打字错误吗?avatar文件夹在web文件夹中吗?@rickz是的,avatar文件夹在web文件夹中。好的,将display.jsp中的链接更改为@rickz这不是一个好位置,正如我前面所说,文件的位置没有问题,src标记指向正确的图像。问题是为什么图像是文本/html类型?谢谢你,巴德,但问题出在其他地方。我确实对upload.jsp做了一些更改,但结果是一样的。在upload.jsp中添加了两行:String filename1=file.getName();字符串filename2=“55_4518625602858925634.png”;在Display.jsp中:显示${filename2},但不显示${filemame1
    <%@page isELIgnored="false" %>
    
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page isELIgnored="false" %>
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
      </head>
      <body>
          <div>
              <img src="${pageContext.request.contextPath}/images/${filename}" border=0 width="48px" height="48px" alt="Image Not found"/>
          <div>
      </body>
    </html>