web-dev-qa-db-fra.com

Que fait exactement cette langue d'expression $ {pageContext.request.contextPath} dans JSP EL?

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>
36
a k

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.

65

utilisez request.getContextPath() au lieu de ${pageContext.request.contextPath} en langage d’expression JSP.

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

sortie: willPrintMyProjectcontextPath

2
bekur

Comprendre <%@ page isELIgnored="false"%> en haut de votre page jsp.

2
NaveenG

Pour la configuration de mon projet, "$ {pageContext.request.contextPath}" = fait référence à "src/main/webapp". Une autre façon de le savoir consiste à cliquer avec le bouton droit de la souris sur votre projet dans Eclipse, puis à accéder à Propriétés:

enter image description here

0
Gene