Dúvida de Ajxa + JSP

2 respostas
E

Prezados,

Estou fazendo uma ferramenta aqui na empresa e pela primeira vez consegui convencer a equipe de TI a utilizar Java, mas estou tendo o seguinte problema logo no início. Tenho uma tela de login que submete os dados via jQuery (codigo abaixo) para a servlet fazer o processo de validação de usuário, mas no retorno apos a validação se eu executo o comando request.getRequestDispatcher("/index.jsp") para o caso de login OK, o que esta ocorrendo é que está é retornando a página index no retorno da variável data do ajax e não o redirecionamento da página, como posso resolver este problema.

Código Ajax

jQuery.ajax({

type: post,

url : login,

data: data,

async : async_p,

success: function(data, textStatus, XMLHttpRequest){

if(data){

alert(Login OK.);

}

},

error: function(XMLHttpRequest, textStatus, errorThrown){

alert(Ocorreu uma falha no sistema, gentileza entrar em contato com o suporte.);

}

});
Código do servlet

if (usuario.getIdusuario()>0){

RequestDispatcher rd = req.getRequestDispatcher("/index.jsp");

rd.forward(req, res);

}else{

System.out.println("Não ok");

}

Desde já agradeço a todos.

2 Respostas

drsmachado

Quando for postar código, utilize a tag [code].

Você não conhece nada de ajax, pelo visto, não?
Isso só pode ser pelo fato de já ter começado usando o jQuery ou semelhante.

Ajax funciona de uma forma diferente do processo normal, como você deve saber, assíncronamente. Mas, como isso é possível?
Um evento dispara uma função que, a partir de um objeto XMLHttpRequest ou ActveXObject("Microsoft.XMLHTTP") irá disparar uma requisição ao servidor.
Este objeto possui alguns atributos e funções, dos quais, destacamos o onreadystatechanged, função executada a cada alteração do readyState (que pode variar entre 0, 1, 2, 3 e 4).
Além do onreadystatechanged, temos o open, que é o responsável por efetuar a requisição em si, seja ela GET ou POST.

Quando o objeto executa o método open, o readyState passa de 0 para 1. Quando a conexão com o servidor é estabelecida, o readyState vai de 1 para 2. Ao ter o processamento realizado, o readyState passa a 3 e, quando o processo é finalizado, o readyState = 4.

E o que isso tem a ver com servlet e jsp?
Ora, o getRequestDispatcher "empurra" a solicitação para que o alvo (parâmetro) seja renderizado. E é isso que será retornado como responseText do ajax e, por consequência, renderizado no local indicado pelo jQuery.

Para resolver o problema?
1 - Troque o "alvo" de "index.jsp" para aquele que deve ser apresentado ao logar.
2 - Reveja a necessidade de realizar isso através de jQuery.
3 - Estudar mais javascript puro e entender como funciona toda a mágica do ajax é essencial.
4 - Usar a tag [code] é tão fundamental quanto.

E

dsrmachado, agradeço desde já o retorno. Quanto ao uso do Ajax já trabalho com ele a muito tempo, mas aqui na empresa trabalhamos ele usando Python, ASP e ASP.NET, sei como fazer esta requisição em JavaScript puro, mas sempre que é possível utilizamos jQuery já que ele provê diversas facilidades que agilizam o processo de desenvolvimento. Quanto ao erro que estou tendo é que diferente de minhas outras aplicações quando eu faço um redirect o site vai para a página indicada, neste caso ele apenas esta retornando como dado de retorno do submit o código da página (verificado com FireBug). Desculpa se está confuso ou não estou expressando corretamente, mas meu conhecimento em Java ainda é bem acadêmico, mas tenho muito interesse em migrar para esta tecnologia e estou aproveitando este projeto para poder fazer meu aprendizado.

Criado 13 de agosto de 2012
Ultima resposta 13 de ago. de 2012
Respostas 2
Participantes 2