olah pessoal!!
estou carregando alguns SELECTS(HTML) em minha aplicação através de consultas ao banco de dados e gostaria de saber se o que estou fazendo está certo ou se existe uma forma melhor de fazer.
o código do q estou fazendo está abaixo: (EXEMPLO)
classe State (bean)
public class State {
private String pais;
private String estado;
private String uf;
public void setPais( String pais ) { this.pais = pais; }
public void setEstado( String estado ) { this.estado = estado; }
public void setUf( String uf ) { this.uf = uf; }
public String getPais() { return pais; }
public String getEstado() { return estado; }
public String getUf() { return uf; }
}
classe StateAdmin
public class StateAdmin {
public StateAdmin() {}
public ArrayList listState() { //método que pesquisa dados em BD
...
ArrayList myStates = new ArrayList();
while( resultSet.next() ){
State state = new States();
state.setPais( resultSet.getString( "pais" ) );
state.setEstado( resultSet.getString( "estado" ) );
state.setUf( resultSet.getString( "uf" ) );
myStates.add( state );
}
...
return myStates;
}
}
então eu uso um servlet que em seu método init eu faço essa pesquisa e jogo esse resultado no ServletContext… código:
servlet ProcessApp.java
....
public void init(ServletConfig config) throws ServletException {
super.init(config);
ServletContext sc = getServletContext();
//jogo os resultados da pesquisa no ServletContext
sc.setAttribute( "states", ( new StateAdmin() ).listStates() );
}
....
agora eu faço o seguinte. assim q inicio meu servidor tomcat eu crio uma instância de ProcessApp, ou seja, meu método init de ProcessApp é carregado deixando carregado meus dados no ServletContext da aplicação. fiz isso mexendo no web.xml da minha aplicação. assim…
web.xml
...
<servlet>
<servlet-name>ProcessApp</servlet-name>
<servlet-class>ProcessApp</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
...
então em meu jsp eu faço…
...
<%
ArrayList states = ( ArrayList )application.getAttribute( "states" );
for( Iterator it = states.iterator() ; it.hasNext() ; ) {
State st = (State)it.next();
out.println( "País: " + st.getPais() + "<br/>" );
out.println( "Estado: " + st.getEstado() + "<br/>" );
out.println( "uf: " + st.getUf() + "<br/>" );
}
%>
...
o que vcs acham? estou fazendo isso da forma correta ou existe uma forma melhor?