[RESOLVIDO] JSP com valores nulos

Saudações!
Criei uma aplicação simples em java web e no meu jsp estou recebendo valores nulos.

public class ServletSignUp extends HttpServlet 
{
	private static final long serialVersionUID = 1L;

/**
 * Default constructor. 
 */
public ServletSignUp() { /**Do nothing here**/ }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{		
		String email = request.getParameter("email");
		String password = request.getParameter("password");
		
		UserDAO userDAO = new UserDAO();
		userDAO.getIdUserFromDB(email);
		User user = userDAO.getOneUserFromBD(email);
		
		String nameUser = user.getUser();
		String birthday = user.getBirthday().toString("dd/MM/yyyy");
		String descUser = user.getDescUser();
		
		if(password.equals(user.getPassword()))
		{
			request.setAttribute("name", nameUser);
			request.setAttribute("email", email);
			request.setAttribute("birthday", birthday);
			request.setAttribute("descUser", descUser);
			
			RequestDispatcher rd = request.getRequestDispatcher("/pages/MyPage.jsp");
			rd.forward(request, response);
			System.out.println(nameUser + "\n" + email + "\n" + birthday + "\n" + descUser);
		}

Nessa impressão que é feita eu tenho todos os resultados normalmente.
test
test@test.com
24/04/2017
user created to tests

Mas quando vou no JSP só recebe o email.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<% 
	String name = request.getParameter("name"); 
	String email = request.getParameter("email");
	String birthday = request.getParameter("birthday");
	String descUser = request.getParameter("descUser");
	System.out.println("JSP: \n" + name + "\n" + email + "\n" + birthday + "\n" + descUser);
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title><%= name %></title>
</head>
<body>
	<h1>Welcome, <%= name %></h1><br>
	<p>This is your page!</p>
	<label for="data">Your datas</label><br>
	<ul id="data">
		<li>email: <%= email %></li>
		<li>birthday: <%= birthday %></li>
		<li>About your: <%= descUser %>
	</ul>
</body>
</html>

Alguém pode me ajudar a encontrar o por quê?
Valeu!

No jsp, retire tudo isso…

<% 
    String name = request.getParameter("name"); 
    String email = request.getParameter("email");
    String birthday = request.getParameter("birthday");
    String descUser = request.getParameter("descUser");
    System.out.println("JSP: \n" + name + "\n" + email + "\n" + birthday + "\n" + descUser);
%>

E no html faça…

<h1>Welcome, ${param.name}</h1><br>
<p>This is your page!</p>
<label for="data">Your datas</label><br>
<ul id="data">
    <li>email: ${param.email}</li>
    <li>birthday: ${param.birthday}</li>
    <li>About your: ${param.descUser}
</ul>

Veja se ajuda…

@paulonoforum, boa tarde.

Veja só… lá no seu servlet, você faz todo o processo de validação do login e tem uma sequência definindo os ATRIBUTOS:

Porém quando você recupera no JSP, está chamando PARAMETROS:

Parâmetros são aquelas variáveis que aparecem na URL. Já os atributos não… Creio que aí está o seu problema. Faça um teste corrigindo isso.

Complementando… você programou um Servlet para atender requisições POST. Provavelmente não está nem mandando nada na URL, ou seja GET.

Valeu, galera!
Entendi o quê disseram.
Mas nesse caso, por que o email vai e o restante não?

E tentando da forma sugerida:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>${param.user}</title>
</head>
<body>
	<h1>Welcome, ${param.name}</h1><br>
	<p>This is your page!</p>
	<label for="data">Your datas</label><br>
	<ul id="data">
		<li>email: ${param.email}</li>
		<li>birthday: ${param.birthday}</li>
		<li>About your: ${param.descUser}</li>
	</ul>
</body>
</html>

Tive o mesmo erro. “O mesmo mesmo”. Só veio o email.

Na instrução SQL está vindo o password também?
Pode ser que não esteja entrando no if(...). Faça algum teste pra ver se a condição está sendo satisfeita. Quando é coisinha simples assim, saio colocando System.out.println("custom message"); pra saber se tá indo até onde eu acho que tá indo.

Outra coisa, utilize o método service(HttpServletRequest request, HttpServletResponse response){…}, ele serve tanto como POST e GET.

Remova os ${param.}. Deixe só

`

  • email: ${email}
  • birthday: ${birthday}
  • About your: ${descUser}
  • `

    com os respectivos atributos. Já que você removeu isso

    String name = request.getParameter("name"); String email = request.getParameter("email"); String birthday = request.getParameter("birthday"); String descUser = request.getParameter("descUser");

    Da pagina .jsp.

    Então, como no meu primeiro artigo, lá tem um System.out.println(nameUser + "\n" + email + "\n" + birthday + "\n" + descUser); após acesso ao banco e mesmo dentro do if.
    O resultado vem:

    test
    test@test.com
    24/04/2017
    user created to tests
    

    mas não vai para o jsp.

    Após isso deu certo, obrigado!
    Ficando só uma dúvida “fora de tópico”. Eu sempre tenho que nomear o meu EL de acordo com o quê nomeado no setParameter(), certo? Nesse caso: setParameter(“nome”, valor) ele busca o valor do ${nome}. Ou seja o quê estiver nomeado no valor do paramêtro deve ser igual no EL?

    Lembrando setAttribute pega os valores a partir da chave (setAttribute(String chave, Object valor)). Então é só pegar pegar pela chave correta que tudo dará certo.