<%
if (request.getParameter(“id”) != null) {
String id = request.getParameter(“id”);
Long idLong = Long.valueOf(id); //out.println(idLong);
}
%>
<c:forEach var=“contato” items="${dao.contato(idLong)}">
ID:
${contato.id}
Nome:
Email:
Endereço:
Data Nascimento:
<listagem:campoData id=“dataNascimento” />
</c:forEach>
<c:import url=“footer.jsp” />[/code]
O DAO não tá pegando a lista gerada no método getContato(long id), esse metodo tá no meu DAO assim:
public List<Contato> getContato(long id) {
try {
List<Contato> contatos = new ArrayList<Contato>();
String sql = "SELECT * FROM cadastros WHERE id = " + id;
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// criando o objeto Contato
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
// montado a data através do calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
// adicionando o objeto à lista
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
Andrea, muita calma nessa hora. Primeiro que trata-se de um fórum e muitos, assim como eu, trabalham e não conseguem estar constantemente aqui para ajudar. A segunda questão é que você postou na área de Java Basico uma dúvida de JEE, existe um local do fórum adequado a esse tipo de dúvida.
Minha recomendação é que o href faça uma referência a um Servlet e você deixe a cargo do teu Servlet a consulta ao banco, popular a lista e executar o redirect. Da forma que fez, fica a cargo do cliente e não é interessante isso em desenvolvimento WEB. Sobre mostrar os dados, me parece estar correto. Faça como eu disse, use um Servlet para o que precisa ser feito no lado servidor e retorne já a lista preenchida, depois basta recupera-la no seu JSP.
Blz Nel, é que eu postei isso faz 9 dias
Então minha única alternativa foi ficar tentando tudo que posso.
Como tô iniciando, pra mim isso era uma dúvida básica
Pegar o id pela url e usar o DAO está errado então?
[quote=andreacerqueira]Blz Nel, é que eu postei isso faz 9 dias
Então minha única alternativa foi ficar tentando tudo que posso.
Como tô iniciando, pra mim isso era uma dúvida básica
Pegar o id pela url e usar o DAO está errado então?
<%
Long id = Long.parseLong(request.getParameter(“id”));
List contato = dao.getContato(id);
for (int i = 0; i < contato.size(); i++) {
out.println("
" + contato.get(i).getEmail() + “
”);
out.println("
" + contato.get(i).getNome() + “
”);
out.println("
" + contato.get(i).getEndereco() + “
”);
}
%>
[/code]
Obrigado[/quote]
Dizer que está errado é complicado, mas eu só não aconselho. Acredito que isso seja algo a ser deixado a cargo do lado servidor e não do cliente. Quando você faz isso, ele não vai ao teu Servlet, ele simplesmente abre uma nova página e via scriplet faz uma consulta diretamente ao seu DAO, pula todas as outras camadas, concorda? Não é a maneira mais adequada a ser feita.
Veja essa linha:List<Contato> contato = dao.getContato(id);
É uma consulta SQL dentro de uma página JSP. O que acontece se gerar exceção ? Não deveria redirecionar para uma página de erro ? Dar um rollback ? Se não encontrar nenhum item, nenhum contato, beleza ? Sem problemas ? Qual o tratamento ?
Entende porque eu digo que deve-se usar desenvolvimento em camadas e enviar a informação para o teu Servlet e não diretamente para a página?
Abraços Andrea.
Vlw Nell, era isso mesmo que eu queria saber.
Agora vou pesquisar melhor sobre servlets, pq me parece que terei que criar milhões delas e é isso que tô achando bizarro.
Vlw pela resposta
[quote=andreacerqueira]Vlw Nell, era isso mesmo que eu queria saber.
Agora vou pesquisar melhor sobre servlets, pq me parece que terei que criar milhões delas e é isso que tô achando bizarro.
Vlw pela resposta ;)[/quote]
Você não precisa criar necessariamente um Servlet para cada necessidade. Como por exemplo, tu tem uma tela com o famoso CRUD, ou seja, Consulta, Deleta, Atualiza e Cria ok? Digamos que seja a tela de Cliente. Não precisa criar um “ClientServletCreate”, “ClientServletUpdate” e assim por diante (sou péssimo para dar nome aos ‘bois’). Mas tu pode ter um “ClientServlet” e nele centralizar todas as necessidades referentes a tela de Cliente.
Quando uma tela exige muitas funções, isso pode tornar trabalhoso e deixar o código na Servlet “feio” e pouco performático, esse seria um caso a usar um segundo Servlet, por exemplo. Bom, vai da sua experiência e necessidade, cada caso é um caso e deve ser analisado isoladamente.