View Javadoc
1   package media;
2   
3   import common.http.interceptor.InterceptableServlet;
4   
5   import javax.inject.Inject;
6   import javax.servlet.ServletException;
7   import javax.servlet.annotation.WebServlet;
8   import javax.servlet.http.HttpServletMapping;
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  import javax.servlet.http.MappingMatch;
12  import java.io.IOException;
13  import java.io.InputStream;
14  import java.net.URLConnection;
15  
16  @WebServlet("/image/*")
17  public class ImageServlet extends InterceptableServlet {
18      @Inject ImageService imageService;
19  
20      @Override
21      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
22          HttpServletMapping httpServletMapping = req.getHttpServletMapping();
23          if(httpServletMapping.getMappingMatch().equals(MappingMatch.PATH)){
24              String filename = httpServletMapping.getMatchValue();
25              try(InputStream stream = imageService.getImage(filename)){
26                  if(stream == null){
27                      resp.setStatus(404);
28                      return;
29                  }
30                  String mime = URLConnection.guessContentTypeFromStream(stream);
31                  resp.setContentType(mime);
32                  stream.transferTo(resp.getOutputStream());
33                  resp.getOutputStream().flush();
34              }
35          } else {
36              resp.setStatus(404);
37          }
38      }
39  }