Desenvoilvimento web - posso melhorar este código? Como?

Olá,

[Desculpem mas a tag <code> não estava funcionando]

Este código está correto?
Posso/devo fazer as chamdas para inserção de Paises e Estados na Action?
Estou usando corretamente o DAO?
Tem uma maneira melhor de tratar a inclusão de Estados(estou pegando array’s de String e populando objetos Estado)?
Alguma sugestão?

//Pais
 import java.util.ArrayList;


public class Pais {

private String nome = "";
private String sigla = "";
private String[] siglaestado = null;
private String[] nomeestado = null;
private ArrayList&lt;Estado&gt; estados = new ArrayList();

public String getNome(){
   return nome;
}
public void setNome(String nome){
   this.nome = nome;
}
public String getSigla(){
   return sigla;
}
public void setSigla(String sigla){
   this.sigla = sigla;
}

  public ArrayList&lt;Estado&gt; getEstados()
  {
    return estados;
  }
 
  public void setEstados( ArrayList&lt;Estado&gt; p_estados )
  {
    this.estados = p_estados;
  }  

public String[] getSiglaestado(){
   return siglaestado;
}
public void setSiglaestado(String[] siglaEstado){
   this.siglaestado = siglaEstado;
}

public String[] getNomeestado(){
   return nomeestado;
}
public void setNomeestado(String[] nomeEstado){
   this.nomeestado = nomeEstado;
}


}

//Estado

public class Estado {

private String nomeEstado = &quot;&quot;;
private String siglaEstado = &quot;&quot;;
private String siglaPais = &quot;&quot;;

public Estado(String sigla, String nome, String sgPais){
   nomeEstado = nome;
   siglaEstado = sigla;
   siglaPais = sgPais;
}
public String getNomeEstado(){
   return nomeEstado;
}
public void setNomeEstado(String nome){
   this.nomeEstado = nome;
}
public String getSiglaEstado(){
   return siglaEstado;
}
public void setSiglaEstado(String sigla){
   this.siglaEstado = sigla;
}

public String getSiglaPais(){
   return siglaPais;
}
public void setSiglaPais(String siglaPais){
   this.siglaPais = siglaPais;
}

}

//Action

public class PaisAction extends DispatchAction{

   java.sql.Connection conn = null;
 
   
   public ActionForward insert(ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
   {
  try {
    
    Estado estado = null;
    conn = Connect.getConnection();
    PaisDAO paisDAO = new PaisDAO(); 
    DynaActionForm paisForm =(DynaActionForm)form;
    Pais pais = new Pais();
    BeanUtils.copyProperties(pais, paisForm);
    
    String siglas[];
    String nomes[];
    siglas = (String[])paisForm.get(&quot;siglaestado&quot;);
    nomes = (String[])paisForm.get(&quot;nomeestado&quot;);
    HttpSession session = request.getSession();
    paisDAO.conn = conn;
    paisDAO.insertPais(pais);
    for( int i = 0; i &lt; siglas.length; i++ ){
       estado = new Estado(siglas[i], nomes[i], pais.getSigla());
       paisDAO.insertEstado(estado);
    }
    
  } catch (Exception sqle) {
    getServlet().log(&quot;Connection.process&quot;, sqle);
  
  } finally {

     //Devolve connection ao pool
     try {
        conn.close();
     } catch (Exception e) {
        getServlet().log(&quot;Connection.close&quot;, e);
     }
  
  }
      
      return (mapping.findForward(&quot;success&quot;));
   }

   public ActionForward delete(ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
   {
    String sigla = null;
  try {
    
    conn = Connect.getConnection();
    sigla = request.getParameter(&quot;sigla&quot;);
    PaisDAO pais = new PaisDAO(); 
    pais.conn = conn;
    pais.deletePais(sigla);
    
  } catch (Exception sqle) {
    getServlet().log(&quot;Connection.process&quot;, sqle);
  
  } finally {

     //Devolve connection ao pool
     try {
        conn.close();
     } catch (Exception e) {
        getServlet().log(&quot;Connection.close&quot;, e);
     }
  
  }
      
      return (mapping.findForward(&quot;success&quot;));
   }

.
.
.

//Form HTML

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;
&lt;%@ page language="java" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt; 
&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt; 

&lt;html:html&gt;
&lt;head&gt;
       &lt;link href="&lt;c:url value='main.css'/&gt;" rel="stylesheet" type="text/css"/&gt;
	&lt;title&gt;Untitled&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;%
int indice_Estado = 0;
%&gt;
&lt;html:form action="/Incluir?action=insert" method="POST"&gt;
&lt;table cellspacing="2" cellpadding="2" border="0"&gt;
&lt;tr&gt;
    &lt;td&gt;Sigla:&lt;/td&gt;
    &lt;td&gt;&lt;html:text property="sigla" name="PaisForm"/&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
    &lt;td&gt;País:&lt;/td&gt;
    &lt;td&gt;&lt;html:text property="nome" name="PaisForm"/&gt;
    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;TD colspan="2" align="right"&gt;
&lt;input type="button" value="Salvar" onclick="Salvar();"&gt;
&lt;/TD&gt;
&lt;/tr&gt;
&lt;/table&gt;
<P>
        <img  >

        &lt;table border="1" cellspacing="1" cellpadding="1"&gt;
         &lt;tbody id="TbGrid_Estado"&gt;
       &lt;tr&gt;
        &lt;th&gt;Sigla&lt;/th&gt;
        &lt;th&gt;Nome&lt;/th&gt;
        &lt;th&gt;&nbsp;&lt;/th&gt;
       &lt;/tr&gt;
    &lt;logic:iterate name="ListaEstados" id="estado"&gt;
        &lt;%
            indice_Estado++;
        %&gt;
        &lt;tr name="LinEstado&lt;%=indice_Estado%&gt;" id="LinEstado&lt;%=indice_Estado%&gt;"&gt;
            &lt;td class="nowrap"&gt;&lt;input type="text" name="siglaestado" value="&lt;bean:write name="estado" property="siglaEstado"/&gt;&quot;&gt;&lt;/td&gt;
            &lt;td class="nowrap"&gt;&lt;input type="text" name="nomeestado" value="&lt;bean:write name="estado" property="nomeEstado"/&gt;&quot;&gt;&lt;/td&gt;
            &lt;td class="nowrap"&gt;
               <img    >
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/logic:iterate&gt;
         &lt;/tbody&gt;
        &lt;/table&gt;
&lt;/html:form&gt;
&lt;/body&gt;
&lt;/html:html&gt;

 &lt;script&gt;
var indice_Estado;
indice_Estado = 0;

 function Salvar(){
     paisForm.action = "/minhapp/Incluir.do?action=save";
     paisForm.submit();
 }

 function Inserir(){
     paisForm.action = "/minhapp/Incluir.do?action=insert";
     paisForm.submit();
 }

.
.
.

//PaisDao

public class PaisDAO{

protected Connection conn = null;
protected String message = "";

private String nome = "";
private String sigla = "";

public String getNome(){
   return nome;
}
public void setNome(String nome){
   this.nome = nome;
}
public String getSigla(){
   return sigla;
}
public void setSigla(String sigla){
   this.sigla = sigla;
}


// Insert
public void insertPais(Pais pais) throws SQLException {

   PreparedStatement pstmt = null;
   SQLException error = null; 

   try {
      String Sql = "INSERT INTO Pais(Sigla_Pais, Pais) Values (?, ?)";
      pstmt = conn.prepareStatement(Sql);
      pstmt.setString(1, pais.getSigla());
      pstmt.setString(2, pais.getNome());
      pstmt.executeUpdate();
      message = "País incluído com sucesso!";

   }catch (SQLException e) {
      error = e; 
      message = "Erro ao criar País."; 
   }

   pstmt.close();
   pstmt = null;

}

public ArrayList getAllPais() throws SQLException {

   PreparedStatement pstmt = null;
   SQLException error = null; 
   ResultSet RsPais = null;
   ArrayList paises = new ArrayList();

   try {
      String Sql = "Select * from Pais";
      pstmt = conn.prepareStatement(Sql);
      RsPais = pstmt.executeQuery();
      while (RsPais.next()){
         PaisForm pais = new PaisForm();
         pais.setSigla(RsPais.getString("Sigla_Pais"));
         pais.setNome(RsPais.getString("Pais"));
         paises.add(pais);
      }
   }catch (SQLException e) {
      error = e; 
      message = "Erro ao obter Países!"; 
   }

   pstmt.close();
   pstmt = null;
   return paises;
}
.
.
.

Primeiramente colocando entre tags [ code] [/ code]. Ajuda o pessoal que estiver com paciência dar uma olhada. :wink:

Vinicios,

No icicio do tópico expliquei que a tag [ code] não estava funcionando.
Vou tentar novamente.

Opa! Hoje está beleza.