Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ivan Lourenço

Consulta de daods utilizando JSP e Servlets

Recommended Posts

Caríssimos, Preciso de uma ajudinha de vocês: montei uma estrutura Java para Web em três camadas - Camada View (JSP), uma camada Servlet e a regra de negocios (Classe) - mais a classe de conexão como BD. Todas as regras de negocio de inclusão, alteração e exclusão já estão funcionando perfeitamente. O meu problema se resume na consulta, ou seja, quando eu digito o codigo na camadaView ele fará uma consulta no BD e me retorna todos os campos.Na camada de regras de negocios eu já deixei pronto, conforme orientação de um livro. Montei a estrutura de recordSet para a camada Servlet e também e creio que está correta. Agora precisorepassar este resultSet para a camada View e apresenta-lo ao cliente. Eis a parte de consulta do Servlet (não se preocupem com outros metodos pois já estão funcionando) private void consultar(HttpServletRequest request) { try { ResultSet rst = null; Cidade objcc = new Cidade(); rst = objcc.consultarPorCodigo(Integer.parseInt(request.getParameter("txtCdCid"))); System.out.println("Cidade Consultada!"); } catch (Exception e) { System.out.println("ERRO ... " + e.getMessage()); } } Observem que o rst recebe o resultado da consulta realizada no banco. Agora preciso passareste resultado a camada View chamada "cidade.jsp" e apresentar no form desta camada. Gostariade pedir ajuda de vocês neste sentido, pois não sei como voltar com os dados para a camadaView.Alguem poderia me ajudar?Desde já fico agradecido pela ajuda.Ivan L. Costa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ivan, acredito que você esteja começando, por isso vou tentar explicar bem claro...

 

na servlet você pode estar criando uma List, com o resultado da consulta

um exemplo:

private void consultar(HttpServletRequest request) {try {ResultSet rst = null;Cidade objcc = new Cidade();rst = objcc.consultarPorCodigo(Integer.parseInt(request.getParameter("txtCdCid")));// comecando criacao da list com nomes das cidadesList listaNomes = new ArrayList();while(rst.next()) {  listaNomes.add( rst.getString("nomeCidade") );}request.setParameter("listaNomes", listaNomes);// fimSystem.out.println("Cidade Consultada!");} catch (Exception e) {System.out.println("ERRO ... " + e.getMessage());}}

com isto você já estaria passando para o JSP uma List de Strings com os nomes da sua cidade,

lembre-se de alterar o nome do campo da cidade nesta linha:

listaNomes.add( rst.getString("nomeCidade") );

 

para pegar a lista no JSP você pode fazer da seguinte maneira:

<%List listaNomes = request.getParameter("listaNomes");%>

 

gostaria de lembrar que está é uma maneira simples e não segura de fazer isto,

caso você se interessar em melhorar o código, procure por frameworks de desenvolvimento web e de bancos de dados.

Neste caso eu usaria JSF e Hibernate.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,Faltou a forma de chamar propriamente a página (me parece ser a sua dúvida), eis:ServletContext Ocontexto = getServletContext(); //representa a aplicação String s_chamar=""; s_chamar="/Cidades.jsp"; //permite que se faça a busca por "/Cidades.jsp" em toda a aplicação RequestDispatcher Odispatcher = Ocontexto.getRequestDispatcher(s_chamar); Odispatcher.forward(request, response); //isto chama a sua pg.Agora, achei estranho o seu trecho de código abaixo ter funcionado"rst = objcc.consultarPorCodigo(Integer.parseInt(request.getParameter("txtCdCid")));"Tem certeza que funciona?Luciana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei colocar esse código, pois é o que preciso.. só que da erro quando tento colocar no JSP a linha de comando... não teria que passar no servlet para depois ir para o JSP? alguem me ajuda com isso?

 

public boolean pesquisaLinhaCL(String linha) {
		boolean pesquisaLinhaCL = false;
		Connection conn = null;
		PreparedStatement ps = null;

		try {
			conn = ConnectionManager.obterConexao();
			ps = conn.prepareStatement(SQL_PESQUISA_LINHA_CL);
			ps.setString(1, linha);
			ps.setString(2, linha);

			ResultSet rs = ps.executeQuery();
			List lista = new ArrayList();
			while (rs.next()) {

				lista.add(rs.getString("Dispositivo"));
				lista.add(rs.getInt("CodTecnologia"));
				lista.add(rs.getInt("APNConfigurada"));
				lista.add(rs.getString("SIMCard"));
				lista.add(rs.getString("Linha"));
				lista.add(rs.getInt("Operadora"));
				lista.add(rs.getInt("APNProvisionada"));
				lista.add(rs.getInt("StatusSIMCard"));
				lista.add(rs.getInt("Fonte"));
				lista.add(rs.getString("IMEI"));
				lista.add(rs.getString("IMSI"));
				lista.add(rs.getInt("StatusLinha"));
				lista.add(rs.getString("ConsDados"));
				lista.add(rs.getString("Matricula"));
				
			}
                          AQUI DA ERRO 
			//request.setParameter("listaNomes", listaNomes);
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			ConnectionManager.fecharConexao(conn, null, ps);
		}

		return pesquisaLinhaCL;
	}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu MVC não está de acordo, o Servlet, que é o controle, deve apenas controlar as requisições e respostas, sendo assim não é aconselhável ele ser responsável por comunicar
com o banco de dados, responsabilidade que é do modelo, que pode ser um modelo DAO separado ou
um modelo "rico" com os métodos CRUD.

A concepção do seu método pesquisaLinhaCL está errado.
Ele não deveria retornar um boolean e sim uma lista de objetos.

Supondo que vc tem uma classe chamada Cidade, vc tem que instanciar
um objeto ou java bean pra cada linha do resultset.
Tente assim;

public List<Cidade> pesquisaLinhaCL(String linha) {

Connection conn = null;
PreparedStatement ps = null;

try {
conn = ConnectionManager.obterConexao();
ps = conn.prepareStatement(SQL_PESQUISA_LINHA_CL);
ps.setString(1, linha);
ps.setString(2, linha);

ResultSet rs = ps.executeQuery();
List<Cidade> lista = new ArrayList<>();

while (rs.next()) {

//Instancia um novo objeto.
Cidade cidade = new Cidade();

//Preenche os atributos do objeto.
cidade.setDispositivo(rs.getString("Dispositivo"));
cidade.setCodigo(rs.getInt("CodTecnologia"));
cidade.setApnConfigurada(rs.getInt("APNConfigurada"));
cidade.setSimCard(rs.getString("SIMCard"));
cidade.setLinha(rs.getString("Linha"));
cidade.setOperadora(rs.getInt("Operadora"));
cidade.setApnProvisionada(rs.getInt("APNProvisionada"));
cidade.setStatusSimCard(rs.getInt("StatusSIMCard"));
cidade.setFonte(rs.getInt("Fonte"));
cidade.setImei(rs.getString("IMEI"));
cidade.setImsi(rs.getString("IMSI"));
cidade.setStatusLinha(rs.getInt("StatusLinha"));
cidade.setConsDados(rs.getString("ConsDados"));
cidade.setMatricula(rs.getString("Matricula"));

//Adiciona o objeto na lista
lista.add(cidade);

}
AQUI DA ERRO
//request.setParameter("lista", lista);

} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionManager.fecharConexao(conn, null, ps);
}

return lista;
}

}

 

 

**PS; Não sei como colocar BBCode nesse novo modelo de resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.