Essa semana em um trabalho de servlet da faculdade, precisei preencher um campo select do html dinamicamente, retornando os dados do banco de dados.
A solução que eu fiz, foi criar um servlet que retorne os dados no formato Json e depois preenchi o campo select usando um código em jquery, mas poderia ser apenas o ajax.
1. Criar um arquivo servlet.
2. No método “doGet” do servlet, coloque o código
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
Statement curStmt;
Connection con = null;
try {
StringBuilder ret = new StringBuilder();
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/FaculdadeN50", "postgres", "123456");
curStmt = con.createStatement();
ResultSet rs = curStmt.executeQuery("select ID, Nome from Pessoa order by Nome");
while (rs.next() == true) {
ret.append("{ "ID" : "" + rs.getInt("ID") + "", "Valor" : "" + rs.getString("Nome") + ""},");
}
out.print("[" + ret.toString().substring(0, ret.length() - 1) + "]");
} catch (SQLException e) {}
catch (ClassNotFoundException e) {
} finally {
try {
con.close();
} catch (SQLException e) {}
}
}
3. Na página onde for usar, coloque o campo select (DropDown):
4. E o código javascript(obs: para esse exemplo precisa usar o framework Jquery).
$.ajax({
type: "get",
url: "nomedoservlet", //coloque o nome do servlet
data: null,
dataType: "json",
async: false,
success: function(data) {
$.each(data, function(i, item){
$("#IdDoCampoSelect").append(''+ item.Valor +'');
});
}
})
Projeto de exemplo no Google Code.