Popular select com dados de um bd

Olá pessoal!!

Queria uma ajuda, estou fazendo um formulario e quero que a partir da seleção de um select que representa um estado ex: SP, seja carregado no outro select as cidades cadastradas no banco que tenham o estado de SP como uf.

Quem puder me ajudar agradeço muito.
Obrigado

O que tu tem de código pronto?!

Oi Thiago to mandando o que tenho por enquanto…obrigadinha!!

fornecedor.html

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>..::Cadastro de Fornecedores::..</title>

</head>
	
	<body>
	<table width="610" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><form id="form" name="form" method="post" action="AdicionaFornecedorServlet.java">
      <table width="610" border="0" cellspacing="0" cellpadding="0" id="todoform">
        <tr>
          <td width="108"><div align="right"><label>Endereço:</label></div></td>
          <td width="502"><input name="endereco" type="text" size="30" maxlength="50" /></td>
        </tr>
        <tr>
          <td><div align="right"><label>Complemento:</label></div></td>
          <td><input name="complemento" type="text" size="30" maxlength="50" /></td>
        </tr>
        <tr>
          <td><div align="right"><label>Bairro:</label></div></td>
          <td><input name="bairro" type="text" size="20" maxlength="20" alt="cnpj"/></td>
        </tr>
        <tr>
          <td><div align="right"><label>Cidade</label></div></td>
          <td><<select name="cidade"></select></td>
        </tr>
</table>
        </form>
    </td>
  </tr>
</table>
    </body>
</html>

BeanFornecedor.java

package modelo;

import java.sql.Timestamp;

public class BeanFornecedor {
	
String endereco;
String complemento;
String bairro;
int cidade;

public String getEndereco() {
		return endereco;
	}
public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
public String getComplemento() {
		return complemento;
	}
public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
public String getBairro() {
		return bairro;
	}
public void setBairro(String bairro) {
		this.bairro = bairro;
	}
public int getCidade() {
		return cidade;
	}
public void setCidade(int cidade) {
		this.cidade = cidade;
	}
}

FornecedorDAO.java


package banco;

import java.sql.*;
import java.sql.SQLException;

import modelo.BeanFornecedor;

public class FornecedorDAO {

	private Connection connection;

    public FornecedorDAO() throws SQLException {
    	connection = ConnectionFactory.getConnection();	
    }

 public void adiciona(BeanFornecedor fornecedor) throws SQLException {

	 // prepared statement para inserção
	String sql = "insert into glo_fornecedores (endereco,complemento,bairro,cidade) values (?,?,?,?)";
    PreparedStatement stmt = connection.prepareStatement(sql);

 stmt.setString(1,fornecedor.getEndereco());
 stmt.setString(2,fornecedor.getComplemento());
 stmt.setString(3,fornecedor.getBairro());
 stmt.setInt(4,fornecedor.getCidade());
 // executa
	 stmt.execute();
	 stmt.close();
	 } 
}

AdicionaFornecedorServlet.java

package modelo;


import banco.FornecedorDAO;

public class AdicionaFornecedorServlet extends HttpServlet{

	protected void service(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		
		BeanFornecedor fornecedor = new BeanFornecedor();
		
		String endereco = request.getParameter("endereco");
		String complemento = request.getParameter("complemento");
		String bairro= request.getParameter("bairro");
		Int cidade = Integer.parseInt("request.getParameter("tf_endereco")");
		
		
	
		try{
		  FornecedorDAO dao = new FornecedorDAO();
		  dao.adiciona(fornecedor);
		 } catch (SQLException e) {
		   throw new ServletException(e);
		 }
			
			PrintWriter writer = response.getWriter();
			writer.println("<html>");
			writer.println("Fornecedor Adicionado");
			writer.println("</html>");
		}	
}

Bom, a maneira mais fácil, seria no seu combo de estados, ao ser selecionado um, você fazer um request a uma servlet passando como parâmetro o estado selecionado, por exepmlo

<form action="CadastroFornecedorServlet" method="post">

    <select name="estado" onchange="document.forms[0].submit()">
        <option value="SP">São Paulo</option>
        <option value="RJ">São Paulo</option>
    </select>
</form>

A partir daí, você pega qual foi o estado selecionado e faz a consulta no banco!

Vou tentar fazer um exemplo aqui mas vai tentando por conta

Thiago entendi seu raciocínio, vou pesquisar o método onchange para ver se posso invocar a servlet de busca de cidades por estado dentro do select.

Obrigadinha!!

Olá MaryJane

Você conhece Ajax? Seria a forma mais elegante de se fazer isso. Imagine se toda vez que clicar em um Estado, você der um submit na página, e toda ela ser carregada denovo? E os campos já preenchidos?

Procure saber um pouco de Ajax, e como complemento, te indico o framework JQuery, que tem uns plugins muito bons para você utilizar.

Vou te passar um resumo de como seria com JQuery, só pra tu ter ideia do tanto que é fácil

[code]

   <select id="estado" onchange="getCidade()">  
       <option value="SP">São Paulo</option>  
       <option value="RJ">São Paulo</option>  
   </select>  
[/code]

Dai com javascript vc faria assim:

function getCidade(){
   $("#cidade").load("cidades.jsp/"+$("#estado").val());

}

Observe que estou usando o framework JQuery para fazer isso.
A função do JQuery load, chama uma página cidades.jsp, onde nela você vai criar um select com todas as cidades referentes aquele estado que vc passou como parametro.

a pagina cidade seria algo do tipo

<select id="cidade" >
<option value="c1">Cidade 1</option>
<option value="c2">Cidade 2</option>
<option value="c3">Cidade 3</option>
</select>

o objeto cidade pode ser um div, onde será criado um select, com todas as cidades.

Mais informações em:
http://jquery.com/
aqui tem uns exemplos básicos que achei por acaso buscando no google
http://www.studioaweb.com.br/blog/2009/04/tutorial-jquery-javascript-iniciante/
Qualquer dúvida posta ai que eu te ajudo.

Abraço