Hola te daré una forma de hacerlo con Struts y consulta a Bases de Datos ya tu decide si lo implementas.
La dinámica es esta:
1.- en el JSP invocas a los Beans que hacen la consulta
2.- cada consulta se guarda en un objeto de tipo ArrayList, Collection, etc.
3.- en el JSP con tags de Struts llenas el combo y listo a mí me funciona muy bien
Ahora si lo que deseas es que cuando el usuario escoja un servidor se llene el siguiente combo puedes hacer que al momento de que el select o comboBox genere el evento onChange() se llame al bean de la BD y llene el combo. Como dije eso ya depende de ti.
Este es un código que llena dos combos a partir de consultas en BD al momento de cargar la pagina JSP.
Codigo JSP
Código PHP:
<head>
<%@ page import = "com.aplicaciones.action.PaisesAction" %>
</head>
<body>
<%
PaisesAction paisesAction = new PaisesAction();
session=request.getSession(true);
if(session.getAttribute("listaCorreos")!=null && request.getAttribute("listaPaises")!=null){
session.removeAttribute("listaCorreos");
session.removeAttribute("listaPaises");
}
PaisesAction.cargaDatos(session);
%>
<logic:present name="listaCorreos">
<html:select name="PaisesForm" property="correos" styleClass="textBox">
<html:options collection="listaCorreos" property="idCorreo" labelProperty="descripcion" />
</html:select>
</logic:present>
<logic:present name="listaPaises">
<html:select name="PaisesForm" property="pais" styleClass="textBox">
<html:options collection="listaPaises" property="idPais" labelProperty="nombrePaisEsp" />
</html:select>
</logic:present>
</body>
Codigo de la consulta a BD usando un pool de conexiones.
Código PHP:
public List getPaistListHtml() throws Exception {
List result=new ArrayList();
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
String sql="Select * from Pais order by NombrePaisEsp";
try{
con=ConnectionFactory.getConnection();
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
//arma la lista de Paises
while(rs.next()){
PaisDTO paisDTO=new PaisDTO();
paisDTO.setIdPais(rs.getString("IdPais"));
paisDTO.setNombrePaisEsp(rs.getString("NombrePaisEsp"));
result.add(paisDTO);
}
}catch(Exception e){
System.out.println(e.getMessage());
throw new Exception(e.getMessage());
}finally{
if(rs!=null){
rs.close();
}if(ps!=null){
ps.close();
}
ConnectionFactory.closeConnection(con);
}
return result;
}
ConnectionFactory es una clase que yo cree donde me conecto a la BD por medio de un initialContext esa clase puedes verla en la sección de faqs al igual que los objetos DTO también puedes ver como son en la sección de faqs aunque solamente son clases simples. Deja y armo un caso para lo que pides sin Struts.
Saludos.