Creo un esempio completo per risolvere il tuo problema. Non hai specificato chiaramente dove stai ricevendo l'errore ed è un po' difficile capire il tuo codice.
Prova a eseguire questo programma, ti assicuro che risolverà sicuramente il tuo problema e ti darà una migliore comprensione anche in JSP, Servlet e DBCode.
Quando esegui questo programma.
Due menu a discesa nella pagina JSP.
1 - per visualizzare tutti gli stati (recupero valore dinamico predefinito dal database)
2 - per visualizzare le città quando selezioni uno stato qualsiasi.
Quando si seleziona uno stato, la città verrà visualizzata nella casella combinata della città e dopo l'aggiornamento della pagina, la posizione dello stato selezionato sarà stabile anche nella combinazione di stato.
Oltre a quando selezioni lo stato, ho visualizzato un record da una tabella diversa in formato tabulare o posso dire usando i tag table,tr,td.
Tre tabelle nel database:Stati, città, dati
Stati:per visualizzare tutti gli stati predefiniti nella combinazione di stati quando si esegue example.City:quando si seleziona lo stato, la città verrà basata sullo stato selezionato.data:quando si seleziona lo stato, i dati verranno visualizzati in forma tabellare (ho appena recuperato tutti i dati anziché in base da qualsiasi cosa).
File - JSP (Client, Codice lato server), Servlet (Codice lato server), DBCoding (Codice database)
IDE - MyEclipseDatabase - MS SQL 2012
Codifica 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 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 - Codice database
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;
}
}
Dopo aver eseguito questo esempio, se ricevi qualche domanda, mandami un messaggio e lo risolverò sicuramente.