Passar variavel do serlvet para o jsp

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:

[code]<%@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>
[/code]
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.

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:

&lt;c:set var="id" value="${id}"/&gt; 

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.

É 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.

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

[code]<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>
[/code]

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

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: