Realizar busca com DAO e exibir com Struts

Olá pessoal,

Iniciante em Struts é cheio de dúvidas!!! rsrs… Estou com a seguinte dúvida, estou utilizando Strus e em uma busca no BD utilizando o a classe DAO eu recebo um arraylist e exibo na tela o resultado em uma tabela. Nesta tabela em cada linha é exibida o resultado da pesquisa, queria na primeira coluna em cada linha exibir um Link ou algo parecido que ao clicar ele pegasse o ID e utilizasse o o procedimento findContatoByIdContato do DAO para então exibir uma outra tela onde ou possa editaro elemento escolhido, porém não sei utilizar o ID do objeto que já esta na página ConsultaContatoSuccess.jsp. Como faço isso?

Classe ContatoDAO.java
Código:

package com.myapp.struts;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
/**
 *
 * @author suporte
 */
public class ContatoDAO {
    /** Creates a new instance of ProdutoDAO */
    public ContatoDAO()throws Exception {
        Class.forName(jdbc_driver).newInstance();
        Connection conn = DriverManager.getConnection(jdbc_url, jdbc_user, jdbc_password);
        statement = conn.createStatement();
    }
   
    public void close() {
        try {
            this.statement.close();
        } catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
   
    public Contato findContatoByIdContato(int idContato) {
        Contato contato = null;
        try {
            ResultSet rs =
                    this.statement.executeQuery( "SELECT * FROM contato WHERE id_contato="
                    + idContato);
            if (rs.next()) {
                contato = new Contato(  rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
            }
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contato;
    }
   
    public ArrayList listAllContatos() {
        ArrayList contatos = new ArrayList();
        Contato contato;
        try {
            ResultSet rs = this.statement.executeQuery("SELECT * FROM contato ORDER BY nome_contato");
            while(rs.next()) {
                contato = new Contato(  rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
                contatos.add(contato);
            }
        } catch(SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contatos;
    }
   
    public ArrayList findContatoByNome(String nomeContato) {
        ArrayList contatos = new ArrayList();
        Contato contato;
        try {
            ResultSet rs = this.statement.executeQuery("SELECT * FROM contato WHERE nome_contato LIKE '%" + nomeContato + "%'");
            while(rs.next()) {
                contato = new Contato( rs.getInt(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6),
                        rs.getString(7),
                        rs.getString(8),
                        rs.getString(9),
                        rs.getString(10),
                        rs.getString(11));
                contatos.add(contato);
            }
        } catch(SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return contatos;
    }
   
    public boolean InsertContato(Contato contato) {
        String nomeContato = contato.getNomeContato();
        String sobrenomeContato = contato.getSobrenomeContato();
        String empresaContato = contato.getEmpresaContato();
        String enderecoContato = contato.getEnderecoContato();
        String cidadeContato = contato.getCidadeContato();
        String estadoContato = contato.getEstadoContato();
        String emailContato = contato.getEmailContato();
        String dddContato = contato.getDddContato();
        String telefoneContato = contato.getTelefoneContato();
        String celularContato = contato.getCelularContato();
        boolean teste = false;
        try {
            int linhas = this.statement.executeUpdate("INSERT INTO contato VALUES(null,'"
                    +nomeContato +"','"
                    +sobrenomeContato+"','"
                    +empresaContato+"','"
                    +enderecoContato+"','"
                    +cidadeContato+"','"
                    +estadoContato+"','"
                    +emailContato+"','"
                    +dddContato+"','"
                    +telefoneContato+"','"
                    +celularContato+"')");
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
       
       
    }
   
   
    public boolean DeleteContato(String idContato) {
        boolean teste = false;
        try {
            int linhas = this.statement.executeUpdate( "DELETE FROM contato WHERE id_contato ='" + idContato + "'");
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
    }
   
   
   
    public boolean AlteraContato(Contato contato) {
        int idContato = contato.getIdContato();
        String nomeContato = contato.getNomeContato();
        String sobrenomeContato = contato.getSobrenomeContato();
        String empresaContato = contato.getEmpresaContato();
        String enderecoContato = contato.getEnderecoContato();
        String cidadeContato = contato.getCidadeContato();
        String estadoContato = contato.getEstadoContato();
        String emailContato = contato.getEmailContato();
        String dddContato = contato.getDddContato();
        String telefoneContato = contato.getTelefoneContato();
        String celularContato = contato.getCelularContato();
        boolean teste = false;
        try {
            String id = String.valueOf(idContato);
            String sql = "";
            sql = "UPDATE contato  SET " +
                    "nome_contato = '"+nomeContato+"'" +
                    ", sobrenome_contato = '"+sobrenomeContato+"'" +
                    ", empresa_contato = '"+empresaContato+"'" +
                    ", endereco_contato = '"+enderecoContato+"'" +
                    ", cidade_contato = '"+cidadeContato+"'" +
                    ", estado_contato = '"+estadoContato+"'" +
                    ", email_contato = '"+emailContato+"'" +
                    ", ddd_contato = '"+dddContato+"'" +
                    ", telefone_contato = '"+telefoneContato+"'" +
                    ", celular_contato = '"+celularContato+"'" +
                    " WHERE id_contato =" + idContato;
            int linhas = this.statement.executeUpdate(sql);
            if (linhas > 0)
                teste = true;
            else
                teste = false;
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
        return teste;
    }
    private Statement statement;
    private static String jdbc_driver= java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.driver");
    private static String jdbc_url = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.url");
    private static String jdbc_user = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.user");
    private static String jdbc_password = java.util.ResourceBundle.getBundle("com/myapp/struts/ApplicationResource").getString("jdbc.password");
   
   
}

Página ConsultaContatoSuccess.jsp

Código:

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ page errorPage="erro.jsp" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Consulta Contato</title>
    </head>
    <body>
        <h1>Resultado da Consulta</h1>
        <table border="1">
            <thead>
                <tr>
                    <th>Editar</th>
                    <th>Excluir</th>
                    <th>ID</th>
                    <th>Nome</th>
                    <th>Sobrenome</th>
                    <th>Empresa</th>
                    <th>Endereco</th>
                    <th>Cidade</th>
                    <th>Estado</th>
                    <th>Email</th>
                    <th>DDD</th>
                    <th>Telefone</th>
                    <th>Celular</th>
                </tr>
            </thead>
            <logic:iterate name="contatosnome" id="contatos" >
                <tbody>
                <tr>
                    <td>Link ou Botão para Excluir AQUI!!!</td>
                    <td>Link ou Botão para Editar AQUI!!!</td>
                    <td><bean:write name="contatos" property="idContato"/></td>
                    <td><bean:write name="contatos" property="nomeContato"/></td>
                    <td><bean:write name="contatos" property="sobrenomeContato"/></td>
                    <td><bean:write name="contatos" property="empresaContato"/></td>
                    <td><bean:write name="contatos" property="enderecoContato"/></td>
                    <td><bean:write name="contatos" property="cidadeContato"/></td>
                    <td><bean:write name="contatos" property="estadoContato"/></td>
                    <td><bean:write name="contatos" property="emailContato"/></td>
                    <td><bean:write name="contatos" property="dddContato"/></td>
                    <td><bean:write name="contatos" property="telefoneContato"/></td>
                    <td><bean:write name="contatos" property="celularContato"/></td>
                </tr>
            </logic:iterate>
            </tbody>
        </table>
     </body>
</html>

Ah… preciso fazer isso utilizando Struts.
Se acharem melhor posso enviar os Beans que utilizo para exibir os resultados

Grato a todos.
Wallfox

Coloque um link assim

<a contatos" />&quot;&gt;Editar</a>

essa action vc fara com que a mesma assuma uqe irá recebr um codigo e então consulte, preencha o bean e depois redireciona para a pagina de edição.
8)

Ok, mas como faço pra passar o código que deve ser igual ao ID exibido na tabela?

Grato.
Wallfox

Cria um link para seu Servlet passando o parametro id assim:

<a href="minhaaplicacao/meuSevlet?id=<%=contatos.getIdContato()%>"><">eidtar</a>

Tenta aí :thumbup:

E ae cara, blz??
Cara, olhei o teu código por cima.
Não sei se tu jah tem alguma base boa sobre JDBC, e programação java.
Mas o negócio é o seguinte, em parte nenhuma do teu código, eu vou tu fechar a conexao, e os statements, e nem os resultsets.
É rapidinho, e o teu sistema vai quebrar.
Outra sujestão, remova as statements, e use a interface PreparedStatement.
Tem um tutorial aqui no guj que fala sobre as querys preparadas. Dá uma olhadinha.

Olá,

Eu chamo o procedimento poraki:

/*
 * ContatoStrutsAction.java
 *
 * Created on 27 de Julho de 2006, 16:13
 */

package com.myapp.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
/**
 *
 * @author mjsed102
 * @version
 */

public class ContatoStrutsAction extends Action {
    
    /* forward name="success" path="" */
    private final static String SUCCESS = "insereContato";
    private final static String ERRO = "erroinsereContato";
    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        ContatoStrutsActionForm contatoForm = (ContatoStrutsActionForm) form;
        Contato contato = new Contato(0, contatoForm.getNomeContato(),
                contatoForm.getSobrenomeContato(), contatoForm.getEmpresaContato(),
                contatoForm.getEnderecoContato(), contatoForm.getCidadeContato(),
                contatoForm.getEstadoContato(), contatoForm.getEmailContato(),
                contatoForm.getDddContato(), contatoForm.getTelefoneContato(),
                contatoForm.getCelularContato());
        ContatoDAO contatoDAO = new ContatoDAO();
        if (contatoDAO.InsertContato(contato)){
            contatoDAO.close();
            contatoForm.reset(mapping, request);
            return mapping.findForward(SUCCESS);
        } else {
            contatoDAO.close();
            contatoForm.reset(mapping, request);
            return mapping.findForward(ERRO);
        }
    }
}