[Débutant J2EE] Traitement d'un formulaire de connexion
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):
Code:
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> |
Et voici le code de la servlet :
Code:
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";
}
} |
Une aide sur ce point me permettrait de comprendre pas mal de choses.
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... :roll: