Как получить запрос на контроллер для конечной точки, который определен как отображение сервлета по умолчанию в web.xml? - PullRequest
0 голосов
/ 26 июня 2019

Я работаю на сервере, где мы используем стороннего API-провайдера для конкретной услуги. Третья сторона отправляет конечную точку изображения. Например. "/media/image/image.jpg". Изображение доступно по стороннему базовому URL.

Мне нужно сделать изображение доступным на нашей базовой ссылке. Для этого у меня есть контроллер.

@RequestMapping(value = "/media/movie/{imageName}", method = RequestMethod.GET)
public void getMovieImage(@PathVariable("imageName") String imageName, HttpServletResponse response) throws IOException {
    String type = imageName.split(".")[imageName.split("\\.").length - 1];
    String imageUrl = getBaseUrl() + imageName;
    BufferedImage image = ImageIO.read(new URL(imageUrl));
    response.setStatus(HttpServletResponse.SC_OK);
    response.setContentType("image/" + type);
    ImageIO.write(image, type, response.getOutputStream());
}

Но проблема в том, что *.jpg определено как отображение сервлета по умолчанию в web.xml.

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.jpg</url-pattern>
</servlet-mapping>`

Таким образом, запрос не попадает в контроллер и показывает 404.

Как я могу получить запрос на моем контроллере или есть альтернативный способ решения проблемы?

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете добавить параметр инициализации фильтра excludedUrls и проверить фильтр, если его нет в списке исключений. См. полный пример

if(!excludedUrls.contains(path))
...