Ответ 1
Это потому, что файл приветствия обслуживается вызовом RequestDispatcher#forward()
. Как доказательство, видите ли вы /WEB-INF/page.jsp
в адресной строке браузера? Нет? Тогда это уже определенно не является прямым запросом. Если вы попытаетесь запросить его напрямую, вы увидите, что вы получили 404.
См. также:
- RequestDispatcher.forward() vs HttpServletResponse.sendRedirect()
- страница wiki сервлета - содержит примеры Hello World, иллюстрирующие примеры использования в реальном мире для
forward()
Несвязанный к конкретной проблеме, вы, похоже, в основном злоупотребляете <welcome-file>
, чтобы иметь "файл главной страницы". Там он не намерен. Он намерен указать единственное имя файла папки, который вы хотите обслуживать, когда была запрошена любая папка, например /
, /foo/
, /foo/bar/
и т.д. Если вы укажете index.jsp
, тогда /index.jsp
, /foo/index.jsp
, /foo/bar/index.jsp
и т.д. будет прозрачно подаваться вперед без изменения URL-адреса.