Я прочитал несколько документов и не понимаю: я знаю, что делаю что-то не так, но не понимаю, что именно. У меня есть веб-сайт, который генерируется полностью динамически: почти нет статического контента.
Итак, пытаясь понять JSP / Servlet, я написал свой собственный «фронт-контроллер», перехватывающий каждый запрос, он выглядит так:
<servlet-mapping>
<servlet-name>defaultservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
В основном я хочу любой запрос пользователя, например:
- example.org
- example.org / бар
- example.org / foo.html
чтобы все прошли через сервлет по умолчанию, который я написал.
Затем сервлет проверяет URI и находит, к чему .jsp должен быть отправлен запрос, и затем, после правильной установки всех атрибутов, a:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/jsp/index.jsp");
dispatcher.forward(req, resp);
Когда я использую шаблон URL (в web.xml ), например, *.html
, все работает нормально. Но когда я изменяю его на /*
(чтобы действительно перехватывать все), я вхожу в бесконечный цикл, и он заканчивается ... StackOverflow:)
Когда отправляется запрос, сам URI "... / WEB-INF / jsp / index.jsp" соответствует самому фильтру web.xml /, который Я установил?
EDIT очевидно, нет, потому что это точное отображение index.jsp и, следовательно, оно обходит шаблон web.xml url. Так что я до сих пор не понимаю, как мне войти в этот бесконечный цикл.
Как мне поступить, если я хочу перехватить все, используя / * url-pattern, и при этом иметь возможность отправлять / пересылать /?
Я не спрашиваю здесь о спецификациях / Javadocs: я действительно смущен общей картиной, и мне нужно какое-то объяснение того, что может происходить.
Разве я не должен перехватывать все?
Если я могу все перехватить, что я должен знать о пересылке / отправке?