webentwicklung-frage-antwort-db.com.de

Was genau macht diese Ausdruckssprache $ {pageContext.request.contextPath} in JSP EL?

Ich habe eine Web-App, in der ich verschiedene Navigationsankertags wie Startseite, Profil usw. habe.

Was ich will:

Wenn ich Anker-Tags drücke, wie z. B. Home oder Profil. Ich möchte nur sicherstellen, dass der aktuelle Benutzer seine Informationen auf dieser Tags/JSP-Seite erhält.

Beispiel Beispiel, das ich versuche:

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

Das pageContext ist ein implizites Objekt, das in JSPs verfügbar ist. Die EL-Dokumentation sagt

Der Kontext für die JSP-Seite. Ermöglicht den Zugriff auf verschiedene Objekte, darunter:
servletKontext: ...
Sitzung: ...
Anfrage: ...
Antwort: ...

Auf diese Weise erhält dieser Ausdruck das aktuelle Objekt HttpServletRequest und erhält den Kontextpfad für die aktuelle Anforderung und hängt /JSPAddress.jsp Daran an, um einen Link zu erstellen (der auch dann funktioniert, wenn den Kontextpfad, auf den diese Ressource bei Änderungen zugegriffen wird).

Der Hauptzweck dieses Ausdrucks ist es, Ihre Links 'relativ' zum Anwendungskontext zu halten und sie vor Änderungen am Anwendungspfad zu schützen.


Wenn Sie beispielsweise unter thisJSP.jsp Auf Ihre JSP (mit dem Namen http://myhost.com/myWebApp/thisJSP.jsp) Zugreifen, lautet der Kontextpfad myWebApp. Der erzeugte Link href ist also /myWebApp/JSPAddress.jsp.

Wenn Sie sich eines Tages entschließen, die JSP auf einem anderen Server mit dem Kontextpfad corpWebApp bereitzustellen, wird die für den Link generierte HREF automatisch auf /corpWebApp/JSPAddress.jsp Geändert, ohne dass Sie etwas dafür tun müssen.

65

benutze request.getContextPath() anstelle von ${pageContext.request.contextPath} in der JSP-Ausdruckssprache.

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

ausgabe: willPrintMyProjectcontextPath

2
bekur

Fügen Sie <%@ page isELIgnored="false"%> Oben auf Ihrer JSP-Seite ein.

2
NaveenG

Bei der Einrichtung meines Projekts bezieht sich "$ {pageContext.request.contextPath}" = auf "src/main/webapp". Eine andere Möglichkeit, dies festzustellen, besteht darin, mit der rechten Maustaste auf Ihr Projekt in Eclipse zu klicken und dann zu Eigenschaften zu wechseln:

enter image description here

0
Gene