-2

我必须在转发的 JSP 中显示一些数据和图像

为了显示数据,我在属性部分设置了值

request.setAttribute("data", mydata);

我在流(InputStream)中有图像,我也可以将其保存为文件,但想知道是否有更好的方法将其直接流式传输到 JSP 页面。

如果我使用 servlet 临时目录“javax.servlet.context.tempdir”保存它,那么我也无法通过它访问它

<img src="location of the file set in attribute section"/>

其他人尝试过的任何首选方式?

使用 Tomcat 7.0.33/Java 7

4

1 回答 1

1

HTTP 本身并不能真正让您流式传输图像,但您可以通过将数据从您的InputStreamHttpServletResponse.getOutputStream().

你可以有一个映射到图像文件的servlet,比如......

<servlet>
    <servlet-name>ImgServlet</servlet-name>
    <servlet-class>ImgServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ImgServlet</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>

然后 servlet 类本身可以处理图像数据流,而无需将其保存到文件中。就像是...

class ImgServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String imageName = request.getRequestURI();
        InputStream data = service.lookUpImage(imageName); //whatever
        IOUtils.copy(data, response.getOutputStream()); // Apache Commons IO
        response.setContentType("image/jpeg");
    }
}

然后页面中可能只有常规图像标签。

于 2012-12-05T16:37:39.787 回答