J'essaie actuellement d'apprendre JSP. Ma question est, à présent, j’avais l'habitude d'inclure l'en-tête et le pied de page de la page en utilisant:
<%@include file="includes/header.jsp" %>
et
<%@include file="includes/footer.jsp" %>
Mais maintenant, j'ai séparé le contenu de la page également. Ainsi, si l’utilisateur clique sur une page, par exemple, products, il doit charger le fichier JSP situé dans: includes/pages/products.jsp
Ainsi, le lien vers l’utilisateur correspond à: <a href="index.jsp?p=products">Products</a>
.
Donc, je dois obtenir la valeur p et afficher la page en fonction de celle-ci.
Voici ce que j'ai fait jusqu'à présent.
<%
if(request.getParameter("p")!=null)
{
String p = request.getParameter("p");
%>
<%@include file="includes/page_name.jsp" %>
<%
}
%>
Alors, comment puis-je placer la valeur de la variable "p" en position de "nom_page"?
Ou, y a-t-il une autre méthode que je pourrais utiliser?
En PHP, nous pourrions utiliser les fonctions include()
ou include_once()
. Je suis un peu coincé dans ce JSP. :(
Ce que vous faites est une inclusion statique. Une inclusion statique est résolue au moment de la compilation et ne peut donc pas utiliser de valeur de paramètre, qui n'est connue qu'au moment de l'exécution.
Ce dont vous avez besoin est une dynamique comprennent:
<jsp:include page="..." />
Notez que vous devez utiliser l'EL JSP plutôt que les scriptlets. Il semble également que vous implémentez un contrôleur central avec index.jsp. Vous devriez plutôt utiliser un servlet pour le faire et l'envoyer au JSP approprié à partir de ce servlet. Ou mieux, utilisez un framework MVC existant tel que Stripes ou Spring MVC.
Vous pouvez utiliser des paramètres comme ça
<jsp:include page='about.jsp'>
<jsp:param name="articleId" value=""/>
</jsp:include>
et
dans about.jsp vous pouvez prendre le paramètre
<%String leftAds = request.getParameter("articleId");%>
Vous pouvez utiliser Inclure les directives
<%
if(request.getParameter("p")!=null)
{
String p = request.getParameter("p");
%>
<%@include file="<%="includes/" + p +".jsp"%>"%>
<%
}
%>
ou Action d'inclusion JSP
<%
if(request.getParameter("p")!=null)
{
String p = request.getParameter("p");
%>
<jsp:include page="<%="includes/"+p+".jsp"%>"/>
<%
}
%>
la directive différente is include inclut un fichier pendant la phase de traduction. alors que JSP Include Action inclut un fichier au moment où la page est demandée
Je recommande Spring MVC Framework comme contrôleur pour manipuler les choses. utilisez le motif url au lieu du paramètre.
exemple:
www.yourwebsite.com/products
au lieu de
www.yourwebsite.com/?p=products
Regardez cette vidéo Spring MVC Framework
Au moment de la traduction, le contenu du fichier indiqué dans la directive include est "collé" tel quel, à l’endroit où la directive JSP include est utilisée. La page JSP source est ensuite convertie en une classe de servlet Java. Le fichier inclus peut être une ressource statique ou une page JSP. En règle générale, la directive include JSP est utilisée pour inclure les bannières d'en-tête et les pieds de page.
Syntaxe pour inclure un fichier jsp:
<%@ include file="relative url">
Exemple
<%@include file="page_name.jsp" %>
1 .<a href="index.jsp?p=products">Products</a>
lorsque l'utilisateur clique sur le lien Produits, vous pouvez appeler directement le fichier products.jsp.
Je veux dire que vous pouvez conserver le nom du fichier JSP comme paramètre Value.
<%
if(request.getParameter("p")!=null)
{
String contextPath="includes/";
String p = request.getParameter("p");
p=p+".jsp";
p=contextPath+p;
%>
<%@include file="<%=p%>" %>
<%
}
%>
ou
2.vous pouvez conserver un fichier de ressources externe avec des paires clé/valeur. comme ci-dessous
products : products.jsp
customer : customers.jsp
vous pouvez récupérer par programme le nom du fichier JSP à partir du fichier de correctifs.
de cette façon, vous pouvez facilement changer le nom du fichier JSP