消除jsp中的列重复性并使用javascript
我有5个JSP页面,r用来创建4个相关下拉列表,在选择最后一个下拉列表时,会显示一个表 代码如下: 第1页:index.jsp消除jsp中的列重复性并使用javascript,javascript,database,jsp,drop-down-menu,Javascript,Database,Jsp,Drop Down Menu,我有5个JSP页面,r用来创建4个相关下拉列表,在选择最后一个下拉列表时,会显示一个表 代码如下: 第1页:index.jsp <%@page import="java.sql.*"%> <html> <head> <script language="javascript" type="text/javascript"> var xmlHttp var xmlHttp var global v
<%@page import="java.sql.*"%>
<html>
<head>
<script language="javascript" type="text/javascript">
var xmlHttp
var xmlHttp
var global
var state
var district
function showState(str){
global=str;
if (typeof XMLHttpRequest != "undefined"){
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null){
alert("Browser does not support XMLHTTP Request")
return;
}
var url="state.jsp";
url +="?count=" +str;
xmlHttp.onreadystatechange = stateChange;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChange(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("state").innerHTML=xmlHttp.responseText
}
}
function showCity(str){
if (typeof XMLHttpRequest != "undefined"){
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null){
alert("Browser does not support XMLHTTP Request")
return;
}
var url="city.jsp";
state=str;
url +="?count=" +str + " " + global;
xmlHttp.onreadystatechange = stateChange1;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChange1(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("city").innerHTML=xmlHttp.responseText
}
}
function showBank(str1){
if (typeof XMLHttpRequest != "undefined"){
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null){
alert("Browser does not support XMLHTTP Request")
return;
}
var url="bank.jsp";
district=str1;
url +="?count=" +str1;
xmlHttp.onreadystatechange = stateChange2;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChange2(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("bank").innerHTML=xmlHttp.responseText
}
}
function showPage(str2){
if (typeof XMLHttpRequest != "undefined"){
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlHttp==null){
alert("Browser does not support XMLHTTP Request")
return;
}
var url="table.jsp";
url +="?count=" +str2 + " " + state + " " + district;
xmlHttp.onreadystatechange = stateChange5;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChange5(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("bank").innerHTML=xmlHttp.responseText
}
}
</script>
</head>
<body>
<select name='country' onChange="showState(this.value)" style="top:150px; position:absolute;">
<option value="none"> DBTL Phase </option>
<%
java.sql.Connection con;
con=null;
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
}
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select DISTINCT DBTLdist from districts ORDER BY DBTLdist ASC");
while(rs.next()){
%>
<option><%=rs.getString(1)%></option>
<%
}
%>
</select>
<div id='state'>
<select name='state' style="left:200px; top:150px; position:absolute;">
<option value="none"> States </option>
<option value='-1'></option>
</select>
</div>
<div id='city' >
<select name='city' style="left:400px; top:150px; position:absolute;">
<option value="none"> Districts </option>
<option value='-1'></option>
</select>
</div>
<div id='bank' >
<select name='bank' style="left:600px; top:150px; position:absolute;">
<option value="none"> Banks </option>
<option value='-1'></option>
</select>
</div>
</body>
</html>
但我想消除那种两面派想要这样的桌子
state district bank branch
punjab bathinda SBI ABC
PQR
XYZ
请帮助我做到这一点…谢谢,也请帮助我简化此代码…因为我是新来编码的您必须跟踪列的最后一个值,并将其与新值进行比较。如果未更改,请抑制该值。如果更改,则显示该值。并在循环结束时将最后一个值设置为新值 那个。。。。这里是将此应用于其他列的位置
String invalid_value = "some invalid value";
String col1_old = invalid_value;
.....
while(rs1.next())
{
out.print("<tr style=\"text-align:center;\">");
if(!col1_old.equals(rs1.getString(1)))
{
out.print("<td>"+rs1.getString(1)+"</td>");
}
else
{
out.print("<td> </td>");
}
.....
col1_old = rs1.getString(1);
.....
out.print("</tr>");
}
字符串无效\u value=“某些无效值”;
字符串col1\u old=无效的\u值;
.....
while(rs1.next())
{
输出。打印(“”);
如果(!col1_old.equals(rs1.getString(1)))
{
out.print(“+rs1.getString(1)+”);
}
其他的
{
输出。打印(“”);
}
.....
col1_old=rs1.getString(1);
.....
输出。打印(“”);
}
hey thanku,感谢您的支持,因为它工作得非常好……有一个问题是,该代码在oracle数据库ans BEA weblogic中工作得很好……但是在tomcat中使用MS SQL数据库时,无法使用相同的代码查看表行r……请帮助此代码应适用于任何数据库类型。但是,可能有些人不允许您对非字符串的字段执行rs1.getString。但是,当将rs1.getString(1)与col1_old进行比较时……它不是打印rs1.getString(1)的值,而是打印其他所有内容……即使是hello或rs1.getString(2)或(3)或(4)…它给出的错误是找不到数据…但是查询在SQL中运行良好…请帮助…我无法跟踪错误原因,因为我使用字段名而不是按数字。无论如何,这将使代码更清晰。rs.getString(“字段”);
<%@page import="java.sql.*"%>
<%
String district=request.getParameter("count");
out.println(district);
String buffer="<select name='bank' style='left:600px; top:150px; position:absolute;' onChange='showPage(this.value);'><option value='-1'>Bank</option><option>All</option>";
try
{
if(district.equals("All"))
{
java.sql.Connection con1;
con1=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con1 = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt1 = con1.createStatement();
ResultSet rs1 = stmt1.executeQuery("select * from banks ORDER BY bank_name ASC");
while(rs1.next()){
buffer=buffer+"<option value='"+rs1.getString(1)+"'>"+rs1.getString(2)+"</option>";
}
}
else
{
java.sql.Connection con;
con=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select DISTINCT * from banks where bank_code IN (select bank_code from bankdetail where district_code='"+district+"') ORDER BY bank_name ASC");
while(rs.next()){
buffer=buffer+"<option value='"+rs.getString(1)+"'>"+rs.getString(2)+"</option>";
}
}
buffer=buffer+"</select>";
response.getWriter().println(buffer);
}
catch(Exception e){
System.out.println(e);
}
%>
<%@ page import="java.sql.*" %>
<%@page import="java.util.*"%>
<%
String bank=request.getParameter("count");
StringTokenizer st = new StringTokenizer(bank," ");
String bank_code=st.nextToken();
String state=st.nextToken();
String district=st.nextToken();
String buffer="<select name='bank' style='left:600px; top:150px; position:absolute;' onChange='showPage(this.value);'><option value='-1'>Bank</option><option>All</option>";
try
{
if(district.equals("All"))
{
java.sql.Connection con1;
con1=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con1 = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt1 = con1.createStatement();
ResultSet rs1 = stmt1.executeQuery("select * from banks ORDER BY bank_name ASC");
while(rs1.next()){
buffer=buffer+"<option value='"+rs1.getString(1)+"'>"+rs1.getString(2)+"</option>";
}
}
else
{
java.sql.Connection con;
con=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select DISTINCT * from banks where bank_code IN (select bank_code from bankdetail where district_code='"+district+"') ORDER BY bank_name ASC");
while(rs.next()){
buffer=buffer+"<option value='"+rs.getString(1)+"'>"+rs.getString(2)+"</option>";
}
}
buffer=buffer+"</select>";
response.getWriter().println(buffer);
}
catch(Exception e){
System.out.println(e);
}
%>
<html><body>
<br><br><br>
<table width="900" border="1" style="top:250px; position:relative; ">
<th>State</th><th>District</th><th>Bank Name</th><th>Branch Name</th>
<%
try
{
if(bank_code.equals("All"))
{
java.sql.Connection con1;
con1=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con1 = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt1 = con1.createStatement();
ResultSet rs1 = stmt1.executeQuery("SELECT DISTINCT states.State_Long,districts.District_Name,banks.bank_name,bankdetail.branch_name FROM bankdetail INNER JOIN states ON bankdetail.state_code=states.State_Code AND states.State_Code='"+state+"' INNER JOIN districts ON bankdetail.district_code=districts.District_Code AND districts.District_Code='"+district+"' INNER JOIN banks ON bankdetail.bank_code=banks.bank_code ");
while(rs1.next()){
%>
<tr style="text-align:center;" >
<td><%out.print(rs1.getString(1));%></td>
<td><%out.print(rs1.getString(2));%></td>
<td><%out.print(rs1.getString(3));%></td>
<td><%out.print(rs1.getString(4));%></td></tr>
<%
}
}
else
{
java.sql.Connection con1;
con1=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con1 = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
Statement stmt1 = con1.createStatement();
ResultSet rs1 = stmt1.executeQuery("SELECT DISTINCT states.State_Long,districts.District_Name,banks.bank_name,bankdetail.branch_name FROM bankdetail INNER JOIN states ON bankdetail.state_code=states.State_Code AND states.State_Code='"+state+"' INNER JOIN districts ON bankdetail.district_code=districts.District_Code AND districts.District_Code='"+district+"' INNER JOIN banks ON bankdetail.bank_code=banks.bank_code AND banks.bank_code='"+bank_code+"'");
while(rs1.next()){
%>
<tr style="text-align:center;" >
<td><%out.print(rs1.getString(1));%></td>
<td><%out.print(rs1.getString(2));%></td>
<td><%out.print(rs1.getString(3));%></td>
<td><%out.print(rs1.getString(4));%></td></tr>
<%
}
}
}
catch(Exception e){
System.out.println(e);
}
%>
</table></body></html>
state district bank branch
punjab bathinda SBI ABC
punjab bathinda SBI PQR
punjab bathinda SBI XYZ
state district bank branch
punjab bathinda SBI ABC
PQR
XYZ
String invalid_value = "some invalid value";
String col1_old = invalid_value;
.....
while(rs1.next())
{
out.print("<tr style=\"text-align:center;\">");
if(!col1_old.equals(rs1.getString(1)))
{
out.print("<td>"+rs1.getString(1)+"</td>");
}
else
{
out.print("<td> </td>");
}
.....
col1_old = rs1.getString(1);
.....
out.print("</tr>");
}