Eu crio um exemplo completo para resolver seu problema. Você não especificou claramente onde está recebendo o erro e é um pouco difícil entender seu código.
Apenas tente executar este programa, garanto que certamente resolverá seu problema e lhe dará um melhor entendimento em JSP, Servlet e DBCode também.
Quando você executa este programa.
Dois drop-down na página JSP.
1 - para exibir todos os estados (valor dinâmico padrão recuperado do banco de dados)
2 - para exibir cidades ao selecionar qualquer estado.
Quando você seleciona qualquer estado, a cidade será exibida na caixa de combinação da cidade e, após a atualização da página, a posição do estado selecionado também ficará estável na combinação de estado.
Assim como quando você seleciona o estado, eu exibi os registros de uma tabela diferente em formato tabular ou posso dizer usando as tags table,tr,td.
Três tabelas no banco de dados - Estados, cidade, dados
States - para exibir todos os estados padrão no combo de estado quando você executar example.City - quando você selecionar o estado, a cidade virá com base no estado selecionado.data - quando você selecionar o estado, os dados serão mostrados em forma de tabela de nada).
Arquivos - JSP (cliente, código do lado do servidor), Servlet (código do lado do servidor), DBCoding (código do banco de dados)
IDE - MyEclipseDatabase - MS SQL 2012
Codificação JSP
<%@ page language="java" import="java.util.*,DBCode.*" pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'MyJsp.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function abc()
{
document.forms["formname"].submit();
}
</script>
</head>
<%
DBCoding db = new DBCoding();
ArrayList al = new ArrayList();
al = db.RetrieveStateName();
String value1="";
%>
<body>
<form action="Servlet1" method="post" name="formname" id="formname">
<select id="selectvalue" name="selectvalue" onchange="abc()";>
<%if(request.getParameter("abc")!=null)
{
String result = request.getParameter("abc");
%>
<%for(int i=0;i<al.size();i++)
{
if(al.get(i).equals(result))
{%>
<option value= "<%=al.get(i) %>" selected="selected"><%=al.get(i) %></option>
<%}
else
{%>
<option value= "<%=al.get(i) %>"><%=al.get(i) %></option>
<%} %>
<%}%>
<%}
else
{ %>
<%for(int i=0;i<al.size();i++)
{
%>
<option value= "<%=al.get(i) %>"><%=al.get(i) %></option>
<%} %>
<%} %>
</select>
<%ArrayList ob = new ArrayList(); %>
<%if(request.getAttribute("City_Name")!=null)
{
ob = (ArrayList)request.getAttribute("City_Name");
%>
<select id="selectcity" name="selectcity">
<%for(int j=0;j<ob.size();j++)
{
%>
<option><%=ob.get(j)%></option>
<%} %>
</select><br/><br/>
<table>
<tr>
<td>Id</td>
<td>Name</td>
<td>Age</td>
<td>City</td>
<%
DBCoding db2 = new DBCoding();
ArrayList al2 = new ArrayList();
ResultSet rs = db2.getTable();
while(rs.next()){
%>
<tr>
<td><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
<td><%=rs.getString(3) %></td>
<td><%=rs.getString(4) %></td>
</tr>
<%
} %>
<%}
else
{
%>
<select>
<option></option>
</select>
<%} %>
</form>
</body>
</html>
Codificação de servlet
import java.io.IOException;
import java.util.*;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import DBCode.DBCoding;
public class Servlet1 extends HttpServlet {
/**
* Constructor of the object.
*/
public Servlet1() {
super();
}
public void destroy() {
super.destroy();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String getstatename = request.getParameter("selectvalue");
DBCoding ob = new DBCoding();
ArrayList al = new ArrayList();
al = ob.RetrieveCityName(getstatename);
request.setAttribute("City_Name", al);
RequestDispatcher rd = request.getRequestDispatcher("MyJsp.jsp?abc="+getstatename);
rd.forward(request, response);
}
public void init() throws ServletException {
// Put your code here
}
}
DBCoding - Código do banco de dados
import java.sql.*;
import java.util.*;
public class DBCoding
{
Connection con;
PreparedStatement ps;
ResultSet rs;
int result=0;
public DBCoding()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:SearchAccount");
}
catch(Exception ee)
{}
}
public ArrayList RetrieveStateName()
{
ArrayList ob = new ArrayList();
try
{
ps = con.prepareStatement("select distinct states from States");
rs = ps.executeQuery();
while(rs.next())
{
ob.add(rs.getString(1));
}
}
catch(Exception ee)
{}
return ob;
}
public ArrayList RetrieveCityName(String statename)
{
ArrayList ob = new ArrayList();
try
{
ps = con.prepareStatement("select city from city where statename=?");
ps.setString(1,statename);
rs = ps.executeQuery();
while(rs.next())
{
ob.add(rs.getString(1));
}
}
catch(Exception ee)
{}
return ob;
}
public ResultSet getTable()
{
ResultSet rs = null;
try
{
ps = con.prepareStatement("select * from data");
rs = ps.executeQuery();
}
catch(Exception ee)
{}
return rs;
}
}
Depois de executar este exemplo, se você receber alguma consulta, basta me enviar uma mensagem e eu resolverei com certeza.