Почему веб файл приветствия web.xml находится внутри WEB-INF

Я читал, что из файла jsp внутри WEB-INF нельзя получить доступ извне (его нужно вызывать из Servlet).

Но почему файл welcome-file in web.xml указывает на файл внутри каталога WEB-INF? так как к этому файлу можно получить доступ извне:

<welcome-file-list>  
    <welcome-file>WEB-INF/page.jsp</welcome-file>  
</welcome-file-list>

Я тестирую Google App engine и контейнер Servlet по умолчанию Jetty 6.

Ответ 1

Это потому, что файл приветствия обслуживается вызовом RequestDispatcher#forward(). Как доказательство, видите ли вы /WEB-INF/page.jsp в адресной строке браузера? Нет? Тогда это уже определенно не является прямым запросом. Если вы попытаетесь запросить его напрямую, вы увидите, что вы получили 404.

См. также:


Несвязанный к конкретной проблеме, вы, похоже, в основном злоупотребляете <welcome-file>, чтобы иметь "файл главной страницы". Там он не намерен. Он намерен указать единственное имя файла папки, который вы хотите обслуживать, когда была запрошена любая папка, например /, /foo/, /foo/bar/ и т.д. Если вы укажете index.jsp, тогда /index.jsp, /foo/index.jsp, /foo/bar/index.jsp и т.д. будет прозрачно подаваться вперед без изменения URL-адреса.