Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSP、Servlet、JQuery和非规范化Mysql表的依赖动态下拉列表_Java_Jquery_Mysql_Jsp_Servlets - Fatal编程技术网

Java 使用JSP、Servlet、JQuery和非规范化Mysql表的依赖动态下拉列表

Java 使用JSP、Servlet、JQuery和非规范化Mysql表的依赖动态下拉列表,java,jquery,mysql,jsp,servlets,Java,Jquery,Mysql,Jsp,Servlets,请查看下面显示的示例非规范化DB: |----|---------------|---------|------------------------|---------------|----------------------| | id | continent | country | state | city | street | |----|---------------|---------|------

请查看下面显示的示例非规范化DB:

|----|---------------|---------|------------------------|---------------|----------------------|
| id | continent     | country | state                  | city          | street               |
|----|---------------|---------|------------------------|---------------|----------------------|
| 1  | North America | USA     | California             | San Francisco | Broadway             |
| 2  | South America | Brazil  | Sao Paulo              | Campinas      | R. Dr. Emilio Ribas  |
| 3  | South America | Brazil  | Sao Paulo              | Campinas      | R. Dr. Vieira Bueno  |
| 4  | Asia          | India   | Maharashtra            | Mumbai        | C.S.                 |
| 5  | Asia          | India   | Maharashtra            | Mumbai        | S.V.                 |
| 7  | Europe        | Germany | North Rhine-Westphalia | Duisburg      | Essenberger          |
| 8  | Europe        | Germany | North Rhine-Westphalia | Bochum        | Solingen             |
| 9  | Europe        | France  | Lorraine               | Toul          | Dijon                |
| 10 | Europe        | France  | Lorraine               | Verdun        | 50 Avenue            |
| 11 | North America | USA     | Massachusetts          | Boston        | Saint Alphonsus      |
| 12 | North America | Canada  | Ontario                | Kingston      | 1st Avenue           |
| 13 | North America | Canada  | Ontario                | Kingston      | 7th Avenue           |
| 14 | North America | Canada  | British Columbia       | Kamloops      | Albert               |
| 15 | North America | USA     | Massachusetts          | Boston        | Eliot                |
|----|---------------|---------|------------------------|---------------|----------------------|
每个下拉列表的值来自上面显示的数据库。街道的价值取决于城市的价值,城市的价值取决于国家的价值,国家的价值取决于国家的价值,国家的价值取决于大陆的价值

例如:如果我选择北美作为一个大陆,那么国家的下拉列表应该只显示美国和加拿大。接下来,若我选择美国,那个么该州的下拉列表应该只显示加利福尼亚州和马萨诸塞州等等。当使用jquery/JSP/Servlet对数据库进行非规范化时,有人能帮我实现这个解决方案吗

到目前为止,我已经完成了以下编码。我使用了jquery并编写了一个jsp:


相关下拉列表
$(文档).ready(函数(){
$(“#大陆”).change(function(){fillOptions('country',this);});
$('#country').change(function(){fillOptions('state',this);});
$('#state').change(function(){fillOptions('city',this);});
$('city').change(function(){fillOptions('street',this);});
});
函数填充选项(childID、parentID){
var child=$('#'+childID);
$.getJSON('json/options?child='+childID+'&val='+$(parentID).val(),函数(opts){
$('>option',child).remove();//首先清除旧选项。
如果(选择){
$。每个(选项、功能(键、值){
附加($('').val(键).text(值));
});
}否则{
附加($('').text(“请选择父项”);
}
});
}
${option.value}
请选择家长
请选择家长
请选择家长
请选择家长
/json/options
后面的
Servlet
如下所示:

import java.io.IOException;
导入java.util.Map;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.apache.log4j.Logger;
导入com.google.gson.gson;
导入com.amey.dao.AddressDAO;
导入com.amey.dao.addressdao实现;
@WebServlet(“/CascadingDropdownController”)
公共类CascadingDropdownController扩展HttpServlet{
私有静态最终记录器LOG=Logger.getLogger(CascadingDropdownController.class.getName());
私人地址道道;
私有静态最终长serialVersionUID=1L;
公共CascadingDropdownController(){
dao=新地址dao实现();
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
日志信息(“在doGet中”);
String child=request.getParameter(“child”);//要填充选项的子DD的ID。
String val=request.getParameter(“val”);//查找关联子DD选项的父DD的值。
映射选项=空;
试一试{
options=dao.find(child,val);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
字符串json=new Gson().toJson(选项);
setContentType(“应用程序/json”);
响应。setCharacterEncoding(“UTF-8”);
response.getWriter().write(json);
}
}

老实说,我不清楚DAO的实施情况。我需要DAO逻辑方面的帮助。

不同的大陆列表:

 SELECT t.continent
   FROM mysqltable t
  GROUP
     BY t.continent

特定大陆的不同国家列表:

 SELECT t.country
   FROM mysqltable t
  WHERE t.continent = 'North America'
  GROUP
     BY t.continent
      , t.country

特定大陆和国家的不同国家列表:

 SELECT t.state
   FROM mysqltable t
  WHERE t.continent = 'North America'
    AND t.country   = 'Canada'
  GROUP
     BY t.continent
      , t.country
      , t.state