Как можно сопоставить окончание URL-шаблона .jsp с сервлетом? - PullRequest
0 голосов
/ 03 сентября 2011

Мне бы хотелось отобразить URL-адрес, который раньше указывал на JSP непосредственно на сервлет, но мои усилия пока что - сопоставление следующего шаблона URL-адреса с моим сервлетом ...

<url-pattern>/folder/myoldjsp.jsp</url-pattern>

не удалось, в результате чего ошибка обработки JSP будет возвращена клиенту.Как мне сопоставить URL, заканчивающийся .jsp, с моим сервлетом?

1 Ответ

2 голосов
/ 03 сентября 2011

Должно работать нормально, если ваш сервлет не в свою очередь перенаправляет запрос в JSP.Это, в частности, привело бы к бесконечному циклу диспетчеризации, поскольку сам сервлет был бы снова выполнен при вызове RequestDispatcher#forward().

Если переименование целевого JSP-файла по какой-либо причине не подходит, тогда лучше всего сопоставить сервлет с другим шаблоном URL-адреса, таким как /foo, и создать фильтр , сопоставленный с/folder/* (или любой другой, соответствующий URL-адресу запроса), который, в свою очередь, определяет, заканчивается ли HttpServletRequest#getRequestURI() на /myoldjsp.jsp, а затем перенаправляет запрос сервлету.

Например,

if (((HttpServletRequest) request).getRequestURI().endsWith("/myoldjsp.jsp")) {
    request.getRequestDispatcher("/foo").forward(request, response);
} else {
    chain.doFilter(request, response);
}

Фильтры по умолчанию не запускаются при переадресации запросов.При необходимости вы можете настроить имена файлов JSP в качестве фильтра <init-param>.

...