Bonjour ,
Je développe un site JSP selon le modèle MVC, j'utilise pour ça Eclipse Europa .
J'ai comme controller la servlet "ServletController" , j'ai une page JSP " identif.jsp" et mes données sont au niveau d'une base PostgreSQL.
J'ai modifier le fichier web.xml
Le problème que j'ai est ce que : "identif.jsp" ne transmet rien à "ServletController" (ou j'ai l'impression qu'elle n'y accède pas); mais de toute manière quand le même code java pour l'accés à la base de données est au niveau de la page JSP, ça marche mais quand il est au niveau d'un doGET du controller ça ne marche pas ; voici les bouts de codes :
identif.jsp :
...
<form method="post" name="connect" id="connect" >
<table class="identif">
<tr>
<td >
<table>
<tr>
<td><b>Pseudonyme</b></td>
<td ><input type="text" name="login_user" /></td>
</tr>
<tr>
<td><b>Mot de passe</b></td>
<td><input type="password" name="pass_user" /></td>
</tr>
<tr>
<td ></td>
<td >
<input class="bouton" name="connec" type="submit" value="connexion" onclick="verifier ()" />
</td>
</tr>
</table></td>
</tr>
</table>
<input type="hidden" name="action" value="connexion" />
</form>
...
NB : verifier () est une fonction javascript qui vérifie les champs de saisie.
ServletController :
package projet;
import jade.util.leap.HashMap;
import jade.util.leap.Map;
import java.io.IOException;
import java.sql.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ServletController extends HttpServlet {
/************* Déclarations ********************/
public static Connection connexion;
public static Statement state;
private Map params=new HashMap();
/********************** Connexion a la base de données ************************/
public void connexionBDD () {
try{
Class.forName("org.postgresql.Driver");
connexion = DriverManager.getConnection("jdbc:postgresql://localhost:5432/base", "postgres", "postgres");
state = connexion.createStatement();
}
catch (ClassNotFoundException ex) {
System.err.println("Problème de pilote");
}
catch (SQLException ex) {
System.err.println("Base de données non trouvée ou requête incorrecte");
}
}
/***************************** doInit **********************************/
void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
// on récupère la session de l'utilisateur
HttpSession session = request.getSession(true);
// on envoie le formulaire vide
session.setAttribute("login_user", "login");
session.setAttribute("pass_user", "password");
getServletContext().getRequestDispatcher((String)params.get("connexion")).forward(request, response);
return;
}
/******************************* doGet *****************************/
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
ServletConfig config = getServletConfig();
//on récupère la session de l'utilisateur, la méthode d'envoi de la requête et l'action à exécuter
HttpSession session = request.getSession(true);
String méthode=request.getMethod().toLowerCase();
String action=request.getParameter("action");
String pseudo= request.getParameter("login_user");
String pass= request.getParameter("pass_user");
session.setAttribute("userName", pseudo);
session.setAttribute("password", pass);
if (action != null) {
System.out.println("je suis dans doGet ");
if (méthode.equals("post") && action.equals("connexion")) {
connexionBDD();
try
{
System.out.println("je suis dans try");
PreparedStatement stmt = connexion.prepareStatement("select * from user where login_user=? and pwd_user=? ");
stmt.setString (1,pseudo);
stmt.setString (2,pass);
ResultSet rset = (ResultSet)stmt.executeQuery();
if (rset.next ()){
System.out.println("je suis dans if");
// mentionner que l'user est connecté (connected=true)
PreparedStatement st11=connexion.prepareStatement("UPDATE user SET connected='true' WHERE id_user= ?");
// récupérer l'identifiant du résultat de la requete précédente
st11.setString(1,rset.getString(1));
st11.executeUpdate();
response.sendRedirect("WebContent/jsp/negociation.jsp");
}
}catch( SQLException e ){ System.out.println(e);}
}
}
}
/******************************* doPost ****************************/
public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
// on passe la main au GET
doGet(request, response);
}
}
Alors SVP dites moi ou est l'erreur , je n'arrive pas à avancer.
Je vous remercie pour votre aide.