问题
I'm trying to create a small servlet that uploads images and is able to retrieve them in a different page as a slideshow.
I'm able to save them outside the WebApp folder, but while retrieving them I need them to be a part of a JSP which will have other content, apart from the images. Currently, I'm using BufferedImage and ImageIO classes to stream the images one at a time.
BufferedImage image = ImageIO.read(new File("D:\\"+file.getName()));
ImageIO.write(image, "jpg", response.getOutputStream());
The file is checked to be a JPEG file type earlier in the code.
回答1:
You need to understand how HTTP and HTML work:
- The browser asks for an HTML page (first request)
- The server sends back HTML (and HTML only), containing 3
<img src="..."/>
tags - The browser sends a request to get the bytes of the first image (second request)
- The server sends back the bytes of the first image
- The browser sends a request to get the bytes of the second image (third request)
- The server sends back the bytes of the second image
- The browser sends a request to get the bytes of the third image (fourth request)
- The server sends back the bytes of the third image
So, you need a servlet or JSP which generates the HTML page, containing all your <img src="..."/>
tags. Each of this tag should have the following form:
<img src="imageServlet?imageId=564"/>
And you need a second servlet, mapped to imageServlet
, which reads the bytes of the image identified by the imageId
parameter value from the file system, and write those bytes to the response output stream.
回答2:
them I need them to be a part of a JSP which will have other content,
Use image tag in JSP
<image src="/context-root/YourServlet?param=value" alt="blah blah"/>
来源:https://stackoverflow.com/questions/11013300/retrieve-images-from-a-folder-outside-web-root-folder-using-servlet