java - 如何在文件位于 tomcat 服务器的 WEB-INF\classes\uploads 文件夹内的 HTML 页面中绑定(bind)图像

标签 java jquery html tomcat

我正在尝试使用 jQuery Scroller 将一些图像存储在 Java Web 应用程序中。

我用了UPLOAD_PATH为每个图像设置上传文件夹:

UPLOAD_PATH = this.getClass().getResource("/uploads").toURI()
                        .getPath();

这些图片已成功保存并存储到此路径。

在客户端绑定(bind)期间,我得到的 JSON 值为:

 [ {   "id" : "57b08900505ab53e40a97355",   "title" : "fdsafdasf",   "description" : "sfdfasd",   "rating" : 3,   "price" : 21.0,   "quantity" : 121,   "type" : "Road Bike",   "primaryimage" : "/uploads/1uSdodND_2016_08_14.jpg",   "addedon" : "2016-08-14",   "isactive" : true }, 
   {   "id" : "57b0318991ed7332c8dd67a3",   "title" : "fdsaf",   "description" : "fdsafd safdsaf",   "rating" : 4,   "price" : 32232.0,   "quantity" : 232,   "type" : "Mountain Bike",   "primaryimage" : "/uploads/rM1hHzek_2016_08_14.png",   "addedon" : "2016-08-14",   "isactive" : true } ]

我正在尝试使用简单的 HTML 页面将这些图像绑定(bind)到 <img> 中标记,但因为图像实际上存储在 WEB-INF\classes\uploads 中我无法直接将这些图像加载到页面中。有什么简单的方法可以加载那些 JSON primaryimage HTML 中的字段页面并显示它们。

最佳答案

您可以编写一个简单的 Servlet 并将请求映射到它。示例代码如下:

小服务程序

package com.javavirtues.sample;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImageServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String fileName = req.getPathInfo();
        InputStream resourceContent = getServletContext()
                .getResourceAsStream("/WEB-INF/classes/uploads" + fileName);
        if (resourceContent == null) {
            resp.sendError(HttpServletResponse.SC_NOT_FOUND);
        } else {
            OutputStream outputStream = resp.getOutputStream();
            byte[] buffer = new byte[1024];
            for (int length = 0; (length = resourceContent.read(buffer)) > 0;) {
                outputStream.write(buffer, 0, length);
            }
        }
    }
}

web.xml 片段

<servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>com.javavirtues.sample.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
    <url-pattern>/uploads/*</url-pattern>
    <servlet-name>ImageServlet</servlet-name>
</servlet-mapping>

关于java - 如何在文件位于 tomcat 服务器的 WEB-INF\classes\uploads 文件夹内的 HTML 页面中绑定(bind)图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38946000/

相关文章:

java - 如何动态更改 Java LAF UIDefaults?

java - 其他文件中的 JSP 模板 - Spring Boot

Java swing渐变绘画ISSUE

javascript - jquery-colorpickersliders onChange 事件在页面加载时触发

javascript - 使用 javascript 更改格式

java - java.util.Date 中的默认时区是什么

javascript - $(document).on ('click' , selector, function() ) 结合 :not

JQuery、Ajax 和 Internet Explorer - 回调仅在响应为空时有效

jquery - 在一个区域显示隐藏的div

html - Polymer.dart 中的自定义元素未显示