Jsp que apresente resultado de busca

4 respostas
diegorosa

Bom pessoal ja to com essa duvida há muito tempo q ainda não obtive resposta ja procurei na net e até aqui no forum mesmo e nada. espero que alguém me ajude.
Estou estudando pela apostila da caelum fj 21. criei o projeto da agenda com o dao e todas as classes que necessita isto está tudo bem o unico problema que eu implementei
uma JSP De busca por ID e uma servlet de busca por ID esse servlet funciona diretinho só não conseguir criar uma jsp que apresente o resultado da minha busca. eu estava direcionando o resultado para a lista de contatos, mas GOSTARIA DE DIRECIONAR PARA UMA JSP QUE MOSTRA-SE apenas o ID do contato e o nome buscados.
:?: :?: :?:
segue meus codigos:

JSP de BUSCA POR ID:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>busca-contato</title>
</head>
<body>
<c:import url="cabecalho.jsp" />

<form action="buscaID" method="post">
<center>ID: <input type="text" name="id"/><br/></center> 
<center>	 <input type="submit" value="Buscar" /></center>


</form>

<c:import url="rodape.jsp" />

</body>
</html>

MINHA SERVELET DE BUSCA:

package br.com.caelum.agenda.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.caelum.agenda.dao.ContatoDAO;
import br.com.caelum.agenda.modelo.Contato;

/**
 * Servlet implementation class buscaID
 */
@WebServlet("/buscaID")
public class buscaID extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void service(HttpServletRequest request, HttpServletResponse response) 
			throws IOException, ServletException{
				 // busca o writer
				 
				 //buscando os paramentros do request
				 
				 Long id = Long.parseLong(request.getParameter("id"));
				 
				 
				 
				 
				 //monta um objeto contato
				 Contato contato = new Contato();
				 contato.setId(id);
				 
				 
				 //salva o contato
				 ContatoDAO dao = new ContatoDAO();
				 dao.busca(contato);
				 
				 //imprime o nome do contato buscado

					RequestDispatcher rd = request.getRequestDispatcher("/lista-contatos-elegante.jsp");
					
					rd.forward(request, response);
				System.out.println("Buscando Contato" + contato.getNome());
				 }
				 
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public buscaID() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

e meu ContatoDAO:

package br.com.caelum.agenda.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.caelum.agenda.ConnectionFactory;
import br.com.caelum.agenda.modelo.Contato;

public class ContatoDAO {
	private Connection connection;
	
	public ContatoDAO() {
		try{
		this.connection = new ConnectionFactory().getConnection();

	} catch (SQLException e){
		throw new RuntimeException(e);
	}
	}


	public void adiciona(Contato contato) {
		
			String sql = "insert into contatos (nome, email, endereco) values (?,?,?)";
			
			try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			//stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
// deixei como comentario pra testar a lista de busca
	
	public List<Contato> getLista() {
		try {
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.connection.prepareStatement("select * from contatos");

			ResultSet rs = stmt.executeQuery();

			while(rs.next()) {
				Contato contato = new Contato();
				//popula o objeto contato
				contato.setId(rs.getLong("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				
/*
				//popula a data de nascimento do contato, fazendo a conversao
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("dataNascimento"));
				contato.setDataNascimento(data);
*/
	//deixado como comentario pra testar a lista de busca
	
				//adiciona o contato na lista
				contatos.add(contato);
			}

			rs.close();
			stmt.close();

			return contatos;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
		

	 
	
	public void busca(Contato contato) {
		String sql = "select * from contatos where id=?";
		try {
			PreparedStatement stmt = this.connection.prepareStatement(sql);
			stmt.setLong(1, contato.getId());
			stmt.execute();
			
				
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	

	


	
	public void altera(Contato contato) {
		 String sql = "update contatos set nome=?, email=?, endereco=? where id=?";
		
		 try {
		 PreparedStatement stmt = connection.prepareStatement(sql);
		 stmt.setString(1, contato.getNome());
		 stmt.setString(2, contato.getEmail());
		 stmt.setString(3, contato.getEndereco());
		 stmt.setLong(4, contato.getId());
		 stmt.execute();

			stmt.execute();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

4 Respostas

drsmachado

Esrtão faltando coisas no teu jsp, não?
Por exemplo,

<c:import url="cabecalho.jsp"/>

Necessita desta linha

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

E, para que você possa mostrar os dados na tua jsp, pode continuar apenas com essa taglib

Código: ${contato.id}<br/>
Nome: ${contato.nome}<br/>
Telefone: ${contato.telefone}<br/>

Não esqueça de adicionar a servlet

contato = dao.busca(contato);
HttpSession session = request.getSession();
session.setAttribute("contato", contato);
equestDispatcher rd = request.getRequestDispatcher("/lista-contatos-elegante.jsp");   
                       
                    rd.forward(request, response);
diegorosa
drsmachado:
Esrtão faltando coisas no teu jsp, não? Por exemplo,
<c:import url="cabecalho.jsp"/>
Necessita desta linha
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
E, para que você possa mostrar os dados na tua jsp, pode continuar apenas com essa taglib
Código: ${contato.id}<br/>
Nome: ${contato.nome}<br/>
Telefone: ${contato.telefone}<br/>
Não esqueça de adicionar a servlet
contato = dao.busca(contato);
HttpSession session = request.getSession();
session.setAttribute("contato", contato);
equestDispatcher rd = request.getRequestDispatcher("/lista-contatos-elegante.jsp");   
                       
                    rd.forward(request, response);

caro drsmachado
creio que fiz do jeito que vc me indicou criei uma jsp de resultado e atribui os paramentros citados acima só que ela mostra apenas o Id da busca
não me traz os outros dados do contato.
segue jsp:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Resultado</title>
</head>
<body>


Código: ${contato.id}<br/>
Nome: ${contato.nome}<br/>
Telefone: ${contato.email}<br/>




</body>

</html>
minha servlet
package br.com.caelum.agenda.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import br.com.caelum.agenda.dao.ContatoDAO;
import br.com.caelum.agenda.modelo.Contato;

/**
 * Servlet implementation class buscaID
 */
@WebServlet("/buscaID")
public class buscaID extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void service(HttpServletRequest request, HttpServletResponse response) 
			throws IOException, ServletException{
				 // busca o writer
				 
				 //buscando os paramentros do request
				 
				 Long id = Long.parseLong(request.getParameter("id"));
				 
				 
				 Contato contato= new Contato();
				 contato.setId(id);
				 
				 ContatoDAO dao = new ContatoDAO();
				 dao.busca(contato);
				 
				 
				 HttpSession session = request.getSession();
				 session.setAttribute("contato", contato);
				 RequestDispatcher rd = request.getRequestDispatcher("/resultado.jsp");
				 
				 rd.forward(request, response);
				 
				 				 }
				 
	
/*
	 //monta um objeto contato
	 Contato contato = new Contato();
	 contato.setId(id);
	 
	 
	 //salva o contato
	 ContatoDAO dao = new ContatoDAO();
	 dao.busca(contato);
	 
	 //imprime o nome do contato buscado

		RequestDispatcher rd = request.getRequestDispatcher("/resultado.jsp");
		
		rd.forward(request, response);
	System.out.println("Buscando Contato" + contato.getNome());

  */     
    /**
     * @see HttpServlet#HttpServlet()
     */
    public buscaID() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

ONDE ESTOU ERRANDO?

diegorosa

Bom pessoal meus codigos estão a cima será que alguem poderia me dar mais uma luz segui umas instruções drsmachado mas não obtive o resultado esperado, espero que alguem no forum possa me ajudar…
Alguma Luz…Por favor. :shock:

diegorosa

pessoal alguem que possa ajudar??

Criado 30 de janeiro de 2012
Ultima resposta 3 de fev. de 2012
Respostas 4
Participantes 2