J'ai une application Web sur laquelle j'ai plusieurs balises d'ancrage de navigation telles que Accueil, Profil, etc.
Ce que je veux:
Lorsque j'appuie sur des étiquettes d'ancrage telles que home ou profile. Je veux juste m'assurer que l'utilisateur actuel obtient ses informations dans cette page Tags/JSP.
Exemple d'exemple que j'essaie:
<a href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>
pageContext
est un objet implicite disponible dans les JSP. La documentation EL dit
Le contexte de la page JSP. Donne accès à divers objets, notamment:
servletContext: ...
session: ...
demande: ...
réponse: ...
Ainsi, cette expression obtiendra l’objet HttpServletRequest
actuel et obtiendra le chemin du contexte pour la requête en cours et ajoutera /JSPAddress.jsp
pour créer un lien (qui fonctionnera même si le chemin de contexte auquel cette ressource est accessible est modifié).
L'objectif principal de cette expression serait de conserver le lien de vos liens avec le contexte de l'application et de les isoler des modifications apportées au chemin de l'application.
Par exemple, si votre JSP (nommé thisJSP.jsp
) est accessible à http://myhost.com/myWebApp/thisJSP.jsp
, le chemin de contenu sera myWebApp
. Ainsi, le lien généré par href sera /myWebApp/JSPAddress.jsp
.
Si un jour vous décidez de déployer la JSP sur un autre serveur avec le chemin de contexte de corpWebApp
, le href généré pour le lien passera automatiquement à /corpWebApp/JSPAddress.jsp
sans aucun travail de votre part.
utilisez request.getContextPath()
au lieu de ${pageContext.request.contextPath}
en langage d’expression JSP.
<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);
sortie: willPrintMyProjectcontextPath
Comprendre <%@ page isELIgnored="false"%>
en haut de votre page jsp.