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>
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.
benutze request.getContextPath()
anstelle von ${pageContext.request.contextPath}
in der JSP-Ausdruckssprache.
<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);
ausgabe: willPrintMyProjectcontextPath
Fügen Sie <%@ page isELIgnored="false"%>
Oben auf Ihrer JSP-Seite ein.