Passar variavel do serlvet para o jsp

6 respostas
fvargas_tkd

Oi pessoal, preciso de um pequeno help, faz um tempo que comecei a estudar o java em casa e estou com uma dificuldade boba...
Seguinte, tenho um servlet que faz a autenticação do usuário no banco e repasso ele para outra página, até aqui tudo certo. Eu setei no servlet um atributo que é a id do usuário, porque na página jsp quero pegar essa id e fazer uma consulta no banco para mostrar na página somente os dados relacionados a esta id. Só que na jsp, eu to usando o jstl para exibir os dados, e não sei como recuperar a variavel que eu setei no servlet. Vou mostrar um trecho dos códigos para vcs:

No servlet eu tenho assim:
if (rs.next()) { // Usuário existênte.  
                System.out.println("Existênte!");
                getServletContext().getRequestDispatcher("/jsp/wellcome.jsp").forward(request, response);
                String userid = rs.getString("id");
                System.out.println("A id é: " + userid);
                request.setAttribute("id", userid);

No jsp eu tenho assim:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<sql:setDataSource var="banco"
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/Namoro"
                   user="root"
                   password=""
                   scope="session"/>
                   
<c:set var="id" value="${userid}"/>                   
           
<sql:query var="rset" dataSource="${banco}">
    select * from cadastro where id = ? order by nome asc
<sql:param value = "id" />    
</sql:query>
este select ser executado levando em consideração o id que foi definido, só que não sei o que está errado, ou estou esquecendo. Se alguém puder me dar uma dica, fico muito agradecido, obrigado a todos.

Fábio.

6 Respostas

ramilani12

Obviamente nao ira funcionar vc redireciona o servlet para jsp e depois seta o id no request , coloque por ultimo o RequestDispacther

String userid = rs.getString("id");  
                 System.out.println("A id é: " + userid);  
                 request.setAttribute("id", userid);       
                getServletContext().getRequestDispatcher("/jsp/wellcome.jsp").forward(request, response);

e na jsp recupere assim:

<c:set var="id" value="${id}"/>
fvargas_tkd

Olá amigo, obrigado por sua resposta. Porém notei que a sua sugestão foi de apenas mudar o local do RequestDispacther, fiz como sua sugestão mas não obtive sucesso. Vc menciona que nao ira funcionar porque eu redireciono o servlet para jsp e depois seta o id no request. Bom eu estou começando então não sei as boas práticas e com certeza vou cometer erros até piores que esse, por isso se me permite, gostaria de perguntar qual a sua sugestão então, qual serio o modo correto ?
Muito obrigado.
Fábio.

ramilani12

É uma boa pratica deixar o redirecionamento por ultimo a leitura fica mais clara.
Na jsp vc alterou a forma de recuperar o id? , na verdade nao é userid e sim id como vc definiu no servlet.

fvargas_tkd

Sim, mas infelizmente não funcionou, ficou assim:

<c:set var="id" value="${id}"/>                   
           
<sql:query var="rset" dataSource="${banco}">
    select * from cadastro where id = ? order by nome asc
<sql:param value = "$[id]" />    
</sql:query>
fvargas_tkd

Amigos, alguém mais tem alguma dica …?
Obrigado.

fvargas_tkd

Fala gurizada medonha, consegui resolver … que erro besta … o problema foi que ao definir a variavel id eu coloquei dentro de outro símbolo ao invés de colchetes, eu arrumei aqui e deu tudo certo muito obrigado a todos.

Fábio.

:smiley:

Criado 27 de setembro de 2008
Ultima resposta 28 de set. de 2008
Respostas 6
Participantes 2