AJAX省市县三级联动

效果

开发结构参考AJAX,JSON用户校验

主要有两个核心文件

1,处理输入字符,进行后台搜索的servlet

linkage.java

 1 package org.guangsoft.servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.sql.Connection;
 6 import java.sql.PreparedStatement;
 7 import java.sql.ResultSet;
 8 import java.util.ArrayList;
 9 import java.util.List;
10 
11 import javax.servlet.ServletException;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 
16 import org.guangsoft.bean.Address;
17 import org.guangsoft.dao.SqlHelper;
18 
19 import com.google.gson.Gson;
20 
21 public class Linkage extends HttpServlet
22 {
23 
24     public void doGet(HttpServletRequest request, HttpServletResponse response)
25             throws ServletException, IOException
26     {
27         processRequest(request, response);
28     }
29 
30     public void doPost(HttpServletRequest request, HttpServletResponse response)
31             throws ServletException, IOException
32     {
33         processRequest(request, response);
34     }
35 
36     protected void processRequest(HttpServletRequest request,
37             HttpServletResponse response) throws ServletException, IOException
38     {
39         request.setCharacterEncoding("UTF-8");
40         response.setCharacterEncoding("UTF-8");
41         response.setContentType("text/html; charset=utf-8");
42         PrintWriter out = response.getWriter();
43         String provinceNo = request.getParameter("provinceNo");
44         String cityNo = request.getParameter("cityNo");
45         Connection connection = null;
46         PreparedStatement prepareStatement = null;
47         ResultSet resultSet = null;
48         try
49         {
50             String sql = "";
51             connection = SqlHelper.getConnection();
52             if(cityNo != null && cityNo != "")
53             {
54                 sql = "select code,name from area where citycode = ?";
55                 prepareStatement = connection.prepareStatement(sql);
56                 prepareStatement.setString(1,cityNo);
57             }
58             else if(provinceNo != null && provinceNo != "")
59             {
60                 sql = "select code,name from city where provincecode = ?";
61                 prepareStatement = connection.prepareStatement(sql);
62                 prepareStatement.setString(1,provinceNo);
63             }
64             else
65             {
66                 sql = "select code,name from province";
67                 prepareStatement = connection.prepareStatement(sql);
68             }
69             
70             resultSet = prepareStatement.executeQuery();
71             List<Address> addrList = new ArrayList<Address>();
72             while(resultSet.next())
73             {
74                 Address address = new Address();
75                 address.setAreaNo(resultSet.getString("code"));
76                 address.setAreaName(resultSet.getString("name"));
77                 addrList.add(address);
78             }
79             Gson gson = new Gson();
80             response.getWriter().print(gson.toJson(addrList));
81         }
82         catch(Exception e)
83         {
84             e.printStackTrace();
85         }
86         finally
87         {
88             SqlHelper.close(connection, prepareStatement, resultSet);
89         }
90     }
91 
92 }

2,展示前台

linkage.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <script src="/ajax/js/AjaxUtil.js"></script>
12     <script>
13         function getProvince()
14         {
15             sendAjaxReq("get","linkage",null,function(data)
16             {
17                 eval("var addrList="+data);
18                 var province = document.getElementById("province");
19                 for(var i = 0; i < addrList.length; i++)
20                 {
21                     var address = addrList[i];
22                     province.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
23                 }
24             });
25         }
26         function getCity(provinceNo)
27         {
28             sendAjaxReq("get","/ajax/linkage?provinceNo="+provinceNo,null,function(data)
29             {
30                 eval("var addrList="+data);
31                 var city = document.getElementById("city");
32                 city.innerHTML="<option value='0'>---请选择---</option>";
33                 for(var i = 0; i < addrList.length; i++)
34                 {
35                     var address = addrList[i];
36                     city.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
37                 }
38             });    
39         }
40         function getArea(cityNo)
41         {
42             sendAjaxReq("get","/ajax/linkage?cityNo="+cityNo,null,function(data)
43             {
44                 eval("var addrList="+data);
45                 var area = document.getElementById("area");
46                 area.innerHTML="<option value='0'>---请选择---</option>";
47                 for(var i = 0; i < addrList.length; i++)
48                 {
49                     var address = addrList[i];
50                     area.innerHTML += "<option value="+address.areaNo+">"+address.areaName+"</option>";
51                 }
52             });    
53         }
54     </script>
55   </head>
56   
57   <body onload="getProvince();">
58       省:<select id="province" onchange="getCity(this.value);">
59           <option value="0">---请选择---</option>
60       </select>
61       市:<select id="city" onchange="getArea(this.value);">
62           <option value="0">---请选择---</option>
63       </select>
64       区:<select id="area">
65           <option value="0">---请选择---</option>
66       </select>
67   </body>
68 </html>

开发截图

 

 

 

原文地址:https://www.cnblogs.com/guanghe/p/5996771.html