问题
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