Что этот язык выражений $ {pageContext.request.contextPath} точно делает в JSP EL? - PullRequest
36 голосов
/ 01 мая 2011

У меня есть веб-приложение, в котором есть различные теги привязки навигации, такие как «Домой», «Профиль» и т. Д.

Что я хочу:

Когда я нажимаю привязкутеги, такие как дом или профиль.Я просто хочу убедиться, что текущий пользователь получает информацию на этой странице тегов / JSP.

Пример примера, который я пытаюсь:

<a  href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>

Ответы [ 4 ]

65 голосов
/ 01 мая 2011

pageContext - это неявный объект, доступный в JSP. В документации EL написано

Контекст страницы JSP.Предоставляет доступ к различным объектам, включая:
servletContext: ...
сеанс: ...
запрос: ...
ответ: ...

Таким образом, этовыражение получит текущий HttpServletRequest объект и получит контекстный путь для текущего запроса и добавит /JSPAddress.jsp к нему для создания ссылки (это будет работать, даже если к контекстному пути к этому ресурсу обращаются вИзменения).

Основная цель этого выражения заключается в том, чтобы сохранить ваши ссылки «относительными» к контексту приложения и изолировать их от изменений пути к приложению.


Например, если к вашему JSP (с именем thisJSP.jsp) обращаются по адресу http://myhost.com/myWebApp/thisJSP.jsp, путь к тексту будет myWebApp.Таким образом, сгенерированная ссылка href будет /myWebApp/JSPAddress.jsp.

Если когда-нибудь вы решите развернуть JSP на другом сервере с контекстным путем corpWebApp, сгенерированный для ссылки href автоматически изменится на /corpWebApp/JSPAddress.jsp без какой-либо работы с вашей стороны.

2 голосов
/ 23 октября 2014

используйте request.getContextPath() вместо ${pageContext.request.contextPath} в языке выражений JSP.

<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);

output: willPrintMyProjectcontextPath

1 голос
/ 12 июня 2015

Включите <%@ page isELIgnored="false"%> в верхней части страницы JSP.

0 голосов
/ 02 марта 2019

Для настройки моего проекта «$ {pageContext.request.contextPath}» = означает «src / main / webapp». Еще один способ узнать это, щелкнув правой кнопкой мыши на своем проекте в Eclipse, а затем перейдя в Свойства:

enter image description here

...