Должно работать нормально, если ваш сервлет не в свою очередь перенаправляет запрос в 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>
.