无法在jsp中加载图像?

时间:2017-12-13 00:44:41

标签: java html jsp java-ee

我遇到这个小问题,我发现在我的控制台中加载图片是不可能的,我不知道如何解决这个问题。

我将数据库中的图像名称作为控制器中的字符串,只是名称,类似于'image.jpg',它存储在我的文件夹'images'中。

这是我的jsp文件:

<c:if test="${ !(post.cover == 'empty')}">
   <div class="imgPub">
     <img src="Assets/images/${post.cover }">
   </div>
</c:if>

在我的检查员中,我可以看到整个src写得完全正确,但旁边有一条消息说无法加载图片。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

HttpServlet 将完成这项工作。

使用:

  

youraddress.xxx/images/filename.png

这很重要@WebServlet(“/ images / *”)

它将自动转到 PATH 中定义的文件夹,并根据名称检索图像。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {

public static final String PATH = "C:/"
/*
linux
public static final String PATH = "/home/images/"
*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String filename = request.getPathInfo().substring(1);
        File file = new File(PATH,filename);
        response.setHeader("Content-Type", getServletContext().getMimeType(filename));
        response.setHeader("Content-Length",String.valueOf(file.length()));
        response.setHeader("Content-Disposition","inline; filename=\""+filename +"\"");
        Files.copy(file.toPath(),response.getOutputStream());
    }

}