Как указать путь к файлу .JSP для request.getRequestDispatcher ()? - PullRequest
2 голосов
/ 02 апреля 2012

Я не понимаю смысла 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», и, насколько я понимаю, это разрешает эту папку независимо от того, как она называется.Это работает.

Однако из всего этого я пришел к выводу, что обратно в моем .java-коде request.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 Ответ

4 голосов
/ 02 апреля 2012

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

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

См. Также:

...