Как указать путь к файлу .JSP для request.getRequestDispatcher ()?

Я запутался в значении request.getContextPath (). Мой формат файла выглядит следующим образом:

MyServer/WebContent:
    /Resources/MyImage.jpg
    /Resources/Scripts/MyScript.js
    /WEB-INF/JSP/MyPage.jsp

вMyPage.jsp Я могу найти JavaScript и изображение с помощью

<script src="${pageContext.request.contextPath}/Resources/Scripts/MyScript.js">

а также

<img src="${pageContext.request.contextPath}/Resources/MyImage.img">

Из этого я пришел к выводу, что${pageContext.request.contextPath} динамически разрешается в папку «WebContent», и, насколько я понимаю, это будет разрешаться в этой папке независимо от того, как она называется. Это работает.

Однако из всего этого я пришел к выводу, что в моем коде .javarequest.getContextPath() также будет динамически преобразовываться в «WebContent». Но когда я пытаюсь перейти от кода .java кMyPage.jsp используя строку, образованную изrequest.getContextPath()+"/WEB-INF/JSP/MyPage.jsp"JSP не может быть найден; это приводит к ошибке 404 - «Запрошенный ресурс (/MyServer/WEB-INF/JSP/MyPage.jsp) недоступен». Если я позвоню"/WEB-INF/JSP/MyPage.jsp" мы запускаем страницу JSP. Может ли кто-то объяснить, почему до ожиданияrequest.getContextPath() приводит к сбою и есть ли что-то еще, что я должен использовать, чтобы гарантировать, что путь к .JSP всегда разрешен?

Ответы на вопрос(1)

Решение Вопроса

RequestDispatcher работает уже относительно текущего контекста веб-приложения. Вам не нужно указывать путь к контексту.

Почему это требуется для ресурсов JS / CSS / image / etc, которые связаны в HTML, просто потому, что веб-браузер должен загрузить их по правильному URL-пути. Распространенная ошибка начинающих заключается в том, что они думают, что именно веб-сервер каким-то образом должен автоматически включать их по пути локальной файловой системы диска. Таким образом, это не так. Это действительно должен быть URL-адрес, подобный тому, который вы вводите в адресной строке браузера.

Смотрите также:Браузер не может получить доступ / найти относительные ресурсы, такие как CSS, изображения и ссылки, при вызове сервлета, который пересылает в JSP
 Alonso Dominguez02 апр. 2012 г., 18:49
UPS! извините, я разместил свой ответ почти одновременно с вашим ...
 BalusC03 апр. 2012 г., 22:38
Как сказано,RequestDispatcherработаетуже относительно текущего контекста веб-приложения. Если этого не произойдет, это будет дыра в безопасности, так как вы сможете отправлять на совершенно другую веб-аппликацию (даже не вашу), которая работает на одном сервере. Вам не нужно беспокоиться о пути к контексту здесь. Просто укажите путь относительно веб-контента следующим образом/WEB-INF/some.jsp.
 Al Koch03 апр. 2012 г., 22:33
Спасибо за ответ. Если я не должен ссылаться на путь контекста, что я должен использовать? Я гарантированно, что «/WEB-INF/JSP/MyPage.jsp» всегда будет разрешен независимо от того, как развернут WAR-файл? Если нет, что я должен использовать для обеспечения мобильности? Еще раз спасибо?

Ваш ответ на вопрос