Probleme redirection servlet

thiouraye Messages postés 7 Statut Membre -  
 thiouraye -
Bonjour,
j'ai un gros soucis depuis quelques temps. Je vous explique :

j'ai une page de connexion qui comporte une div. j'interroge ma servlet pour voir si le compte existe. S'il n'existe pas j'affiche un message d'erreur sur la div. Si le compte est bon je fais une redirection vers une page index le problème c'est que la page index est mis dans la div. quoi qu'il arrive il met à jour la div. J'arrive pas à rediriger vers la bonne page et fermer la div si le login est correct. Si quelqu'un a déja eu ce genre de soucis merci de m'aider s'il vous plait.
je joins les fichiers :
la servlet :

public class CheckLoginServlet extends HttpServlet {

static Logger logger = Logger.getLogger(CheckLoginServlet.class);

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("DO GET");
String email = request.getParameter("email");
String password = request.getParameter("password");
DAOConnection daoc = null;
Connection con = null;

logger.info("email = "+email);
logger.info("password = "+password);
String valeur = "";
try{

daoc = DAOConnection.newInstance();
con = daoc.getConnection();
Factory factory = new Factory();
int identifiantCandidat = factory.checkLoginCandidat(con,email, password);
LoginFormBean login = new LoginFormBean();
PrintWriter out = response.getWriter();

if(identifiantCandidat==0){
valeur = "Mauvais Login";
// request.setAttribute("login", login);
// Write the text to response
response.setContentType("text/html");
out.println(valeur);
out.flush();
}else{
// redirection
//int statut = 201;
UserSessionBean usersession= new UserSessionBean();
usersession.setCandidateLastname(email);
request.setAttribute("usersession", usersession);
request.setAttribute("espace", "1");
//response.setStatus(statut);
//response.sendRedirect("test.html");
out.println("/index.html");

}
}catch(Exception e){
e.printStackTrace();
}
}

}

/********************************** le JAVASCRIPT ****************/

function appelAjaxExemple(){
alert("appel ajax");
var email = document.getElementById('email').value;
var password = document.getElementById('password').value;
ajaxCallRemotePage('/CheckLoginServlet?email='+email+'&password='+password);
}

function ajaxCallRemotePage(url){
if (window.XMLHttpRequest){
// Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send(null);
}
else if (window.ActiveXObject)
{
// IE
req = new ActiveXObject("Microsoft.XMLHTTP");
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send();
}
else {
return; // Navigateur non compatible
}
}
function processStateChange(){
if (req.readyState == 4)
{ // Complete
if (req.status == 200)
{
// OK response
// alert("response = "+req.responseText);
var d = document.getElementById('monDiv');
d.innerHTML = req.responseText;

}else {
// Pour le debug
alert("Problem: " + req.statusText);
alert("status = : " + req.status);

}
}

}

4 réponses

adns Messages postés 1152 Statut Membre 153
 
Bonjour,

faire une redirection sur un script appelé en ajax ne fonctionne pas dans mes souvenir.

Par contre tu peux la faire en javascript. Exemple :

var d = document.getElementById('monDiv');
if(d == "index.html")
document.location.href = d;
else
d.innerHTML = req.responseText; 


Adns
0
thiouraye Messages postés 7 Statut Membre 1
 
Merci Adns de la réponse cela m'a permis d'avancer un peu. Seulement si je fais ça en supposant que dans ma servlet je fais : out.println("index.html");
donc je pourrais pas récupéré la session de l'utilisateur si son compte est correct car dans ma servlet je fais :

UserSessionBean userSession = new UserSessionBean();
userSession.setCandidateLastname(nom);
request.setAttribute("usersession", userSession);

Merci beaucoup pour la réponse. Si vous avez d'autres pistes merci de m'aider à résoudre mon pb.
0
adns Messages postés 1152 Statut Membre 153
 
Euh ??

Je ne connais pas particulièrement les UserSessionBean mais les sessions en général non pas besoin d'être passées de pages en pages..

Mais je peux me tromper.

Sinon tu peux toujours soumettre ton formulaire vers ta servlet lorsque que la réponse reçue est bonne. Tu n'auras plus l'effet ajax mais au moins ta servlet fera une vrai redirection

Adns
0
thiouraye
 
Merci adns je pense que j'ai résolu le pb. j'utilise l'objet session des servlets que je récupère par la suite. Merci de tes pistes ça m'a beaucoup aidé.
bonne fête de 14 juillet.
0