私はあなたの問題を解決するための完全な例を作成します。エラーが発生している場所を明確に指定しておらず、コードを理解するのが少し難しいです。
このプログラムを実行してみてください。問題が確実に解決され、JSP、サーブレット、DBCodeについても理解が深まると確信しています。
このプログラムを実行するとき。
JSPページの2つのドロップダウン。
1-すべての状態を表示します(デフォルトの動的値はデータベースから取得します)
2-任意の州を選択したときに都市を表示します。
いずれかの州を選択すると、都市が都市コンボボックスに表示され、ページを更新した後、選択した州の位置も州のコンボで安定します。
状態を選択するときと同様に、さまざまなテーブルのレコードを表形式で表示するか、table、tr、tdタグを使用して言うことができます。
データベース内の3つのテーブル-州、都市、データ
状態-example.Cityを実行すると、デフォルトのすべての状態が状態コンボで表示されます。City-状態を選択すると、都市は選択した状態に基づいて表示されます。data-状態を選択すると、データは表形式で表示されます(ベースではなくすべてのデータを取得しただけです)。何からでも)
ファイル-JSP(クライアント、サーバー側コード)、サーブレット(サーバー側コード)、DBCoding(データベースコード)
IDE-MyEclipseDatabase-MS SQL 2012
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>
サーブレットコーディング
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-データベースコード
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;
}
}
この例を実行した後、クエリが表示された場合は、メッセージをドロップしてください。確実に整理します。