Jsp中的多个依赖下拉列表

时间:2014-03-30 12:06:39

标签: java mysql jsp

我在Jsp中有三个下拉列表。分支,学期和主题和价值来自MySQL。分支和学期不相互依赖。但主题价值应取决于分支和学期两者。 我做了以下代码。 问题出现了,虽然选择了分支和学期下拉值,但主题下拉值不获取均值显示空白下拉字段。

FirstTwoDropdown.jsp

<%@page import="java.sql.*"%>

<%@page import="com.connection.*"%>
<%Connection con;
 ResultSet rs;
 Statement st;


 con = connectiondb.condb();
   %>
   <html>
      <head>  
      <script language="javascript" type="text/javascript">  
      var xmlHttp
          function showsubject(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="subject.jsp";
              url +="?count=" +str;
              xmlHttp.onreadystatechange = stateChange1;
              xmlHttp.open("GET", url, true);
              xmlHttp.send(null);
              }
              function stateChange1(){   
              if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){   
              document.getElementById("subject").innerHTML=xmlHttp.responseText   
              }   
              }
      </script> 
      </head>  
      <body>  
      <select name='branch_name' onchange="showsemester(this.value)">  
       <option value="none">Select</option>  
    <% 
   st = con.createStatement();  
   rs = st.executeQuery("select distinct branch_name from subject_tbl");
  while(rs.next()){
     %>
      <option value="<%=rs.getString("branch_name")%>"><%=rs.getString("branch_name")%></option>  
      <%
 }
     %>
      </select>  
      <br>   
      <select name='semester' >
      <option value="none">Select</option>  
    <% 
st = con.createStatement();  
  rs = st.executeQuery("select distinct semester from subject_tbl");
 while(rs.next()){
     %>
      <option value="<%=rs.getString("semester")%> on"><%=rs.getString("semester")%></option>  
      <%
 }
     %>  
      </select>  

      <select name='subject_name' >  
      <option value=''></option>  
      </select> 
      </body> 
</html>

subject.jsp

<%@page import="java.sql.*"%>
<%@page import="com.connection.*"%>
<%
String semester=request.getParameter("semester");
String branch_name=request.getParameter("branch_name");
String buffer="<select name='subject_name'><option value=''>Select</option>"; 
Connection con;
ResultSet rs;
Statement st;
 con = connectiondb.condb();
 try{  
 st = con.createStatement();  
 rs = st.executeQuery("Select subject_name from subject_tbl where semester='"+semester+"' and branch_name='"+branch_name+"' ");  
   while(rs.next()){
   buffer=buffer+"<option value='"+rs.getString("subject_name")+"'>"+rs.getString("subject_name")+"</option>";  
   }  
 buffer=buffer+"</select>";  
 response.getWriter().println(buffer); 
 }
 catch(Exception e){
     System.out.println(e);
 }
 %>

1 个答案:

答案 0 :(得分:0)

就像提示:尝试将业务逻辑与JSP文件分开。 有不同的选项可以使用Servlets,另一种方法是使用Java Bean Components

第二个提示:关闭资源。

// Java 7 Try - with resources syntax 
try (
   Connection con = connectiondb.condb();
   Statement st = con.createStatement();  
) 
{
   try (ResultSet rs = st.executeQuery(...)) 
   {
      // do something with your result set 
   } 
}

您的数据库只有有限的资源,例如 Connections Cursors ,...

第三条提示:使用准备好的语句。否则,有人可能会使用SQL Injection攻击您的系统。

为您的问题:只是一个猜测

您从FirstTwoDropdown.jsp检索的学期价值是“ semester-value on”,即“追加”到“从数据库中检索到的值。”

另一件事是FirstTwoDropdown.jsp使用未在页面中定义的javascript函数showsemester - 因此这将永远不会起作用。 showsubject函数会发送count未使用的查询参数subject.jsp