Подтвердить что ты не робот

Что делает этот язык выражения ${pageContext.request.contextPath} в JSP EL?

У меня есть веб-приложение, где у меня разные теги привязки к навигации, такие как Home, Profile и т.д.

Что я хочу:

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

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

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

Ответ 1

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

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

Ответ 3

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

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

вывод: willPrintMyProjectcontextPath