Bonjour à tous,
je développe habituellement en PHP, j'ai donc quelques soucis avec les mécanismes des JSP/Servlets.
En fait, je suis en train de développer un bête formulaire de connexion, avec une Servlet associée qui renvoie vers ce formulaire en cas d'erreur, vers une page membres si la connexion réussit.
Si la connexion échoué, les champs doivent être marqués comme incorrect, si la connexion réussit, un bean est instancié en session.
Je dois n'utiliser que les tags JSTL "core" (ni JSP scriptlets ou JSF) (=contrainte du projet).
Mon problème est que je n'arrive pas à marquer les champs comme incorrects, en cas d'erreur de saisie. J'ai essayé pas mal de choses... sans succès.
Voilà le code la page d'accueil (login.jsp):
Et voici le code de la servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page session="true"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:set scope="session" var="isConnected" value="${session['isConnected']}" /> <c:set scope="session" var="hasErrors" value="${session['hasErrors']}" /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Login</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="default.css" rel="stylesheet" type="text/css" media="all" /> </head> <body> <div id="wrapper"> <h1>Login</h1> <form action="Connect" method="post"> <div class="input"> <label for="username"> <c:if test="${hasErrors}"> <span class='error'>* </span> </c:if>Username: </label> <input type="text" id="username" name="username" /> </div><div class="clearer"> </div> <div class="input"> <label for="password"> <c:if test="${hasErrors}"> <span class='error'>* </span> </c:if> Password: </label> <input type="password" id="password" name="password" /> </div><div class="clearer"> </div> <div class="inputSubmit"> <input type="submit" value="Submit" /> </div> </form> <p id="links"> Not registered yet ? Create an account <a href="register.jsp">here</a>. </p> </div><!-- end of wrapper --> </body> </html>
Une aide sur ce point me permettrait de comprendre pas mal de choses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 public class Connect extends HttpServlet { /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String login = request.getParameter("username"); String password = request.getParameter("password"); ServletContext context = getServletContext(); //retrieval of the corresponding user, if exists User storedUser = (User)context.getAttribute(login); /* ** FORM CHECK-OUT ** */ //user doesn't exist or bad password if(storedUser==null || !password.equals(storedUser.getPassword())) { session.setAttribute("hasErrors", true); session.setAttribute("isConnected", false); //redirect to login page response.sendRedirect("login.jsp"); } else if(password.equals(storedUser.getPassword())){ session.setAttribute("isConnected", true); int hc = storedUser.getId().hashCode(); session.setAttribute(login, hc); //redirect to the member welcome page response.sendRedirect("member.jsp?id="+hc); } } /** * Returns a short description of the servlet. */ @Override public String getServletInfo() { return "Servlet dedicated to user connection"; } }
Merci d'avance de votre aide !
Rolf
P.S. : ça déroge un peu à la charte, mais je dois avouer que mon problème est assez urgent...
Partager