Ответ 1
У вас есть 2 варианта:
-
Используйте более конкретный шаблон URL, например
/app/*
или*.do
, а затем пусть все ваши запросы на страницы соответствуют этому шаблону URL. См. Также веб-приложения с шаблонами проектирования -
То же, что и 1, но вы хотите скрыть отображение сервлета из URL-адреса запроса; вы должны поместить все статические ресурсы в общую папку, такую как
/static
или/resources
, и создать фильтр, который проверяет, не совпадает ли URL-адрес запроса, а затем перенаправляется на сервлет. Вот пример, который предполагает, что ваш сервлет-контроллер является@WebServlet("/app/*")
и что фильтр является@WebFilter("/*")
и что все ваши статические ресурсы находятся в папке/resources
.HttpServletRequest req = (HttpServletRequest) request; String path = req.getRequestURI().substring(req.getContextPath().length()); if (path.startsWith("/resources/")) { chain.doFilter(request, response); // Goes to default servlet. } else { request.getRequestDispatcher("/app" + path).forward(request, response); // Goes to your controller. }
См. также Как получить доступ к статическим ресурсам при сопоставлении глобального сервлет-контроллера в /*.