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:
paulonoforum:
request.setAttribute(“name”, nameUser);
request.setAttribute(“email”, email);
request.setAttribute(“birthday”, birthday);
request.setAttribute(“descUser”, descUser);
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.
Remova os ${param.}. Deixe só
<li>email: ${email}</li>
<li>birthday: ${birthday}</li>
<li>About your: ${descUser}</li>
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.
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.