J'ai une application Java non-framework. Il se compose de fichiers jsp pour la vue et de servlets pour la logique applicative. Je dois définir la session utilisateur est le servlet avec un paramètre firstName. Dans le fichier jsp, je dois vérifier si mon paramètre firstName a une valeur ou non. Si le paramètre firstName est défini, je dois afficher du code HTML dans le fichier jsp. S'il n'est pas défini, je dois afficher différents fichiers HTML dans le fichier jsp.
Servlet.Java:
HttpSession session = request.getSession();
session.setAttribute("firstName", customer.getFristName());
String url = "/index.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
header.jsp:
// Between the <p> tags bellow I need to put some HTML with the following rules
// If firstName exist: Hello ${firstName} <a href="logout.jsp">Log out</a>
// Else: <a href="login.jsp">Login</a> or <a href="register.jsp">Register</a>
<p class="credentials" id="cr"></p>
Quelle serait la meilleure façon de faire cela?
Mettre à jour:
Voici un excellent tutoriel que j'ai trouvé sur JSTL, au cas où quelqu'un en aurait besoin: http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
<% if (session.getAttribute("firstName") == null) { %>
<p> some content </p>
<% } else {%>
<p> other content </p>
<% } %>
Je pense que la meilleure façon de le faire est d'utiliser des balises jstl. Parce que pour une application jsp simple, il peut être judicieux d’ajouter tout le code Java au HTML mais une application plus lourde, il est recommandé d’utiliser un code Java minimum sur le HTML (séparez la couche vue de la logique) (lisez ceci pour plus https://stackoverflow.com/a/3180202/2940265 )
Pour votre attente, vous pouvez facilement utiliser du code comme ci-dessous
<c:if test="${not empty firstName}">
<%--If you want to print content from session--%>
<p>${firstName}</p>
<%--If you want to include html--%>
<%@include file="/your/path/to/include/file.jsp" %>
<%--include only get wrong if you give the incorrect file path --%>
</c:if>
<c:if test="${empty firstName}">
<p>Jaathi mcn Jaathi</p>
</c:if>
Si vous n'avez pas correctement inclus jstl, vous ne pourrez pas obtenir le résultat attendu. renvoyer ceci pour un tel incident https://menukablog.wordpress.com/2016/05/10/add-jstl-tab-library-to-youproject-correctly/
Dans le servlet, vous pouvez écrire comme suit
HttpSession session = request.getSession(true);
session.setAttribute("firstName", customer.getFristName())
response.sendRedirect("index.jsp");
La request.getSession(true)
renvoie une nouvelle session si aucune session n’existe, sinon elle renverra la session en cours. Et, dans la page index.jsp
, vous pouvez procéder comme suit:
<%
if(session.getAttribute("firstName")==null) {
%>
<jsp:include page="firstPage.html"></jsp:include>
<%
} else {
%>
<jsp:include page="secondPage.html"></jsp:include>
<%
}%>
Ici, si la variable firstName
est nulle, alors firstPage.html
sera inclus dans la page sinon secondPage.html
.