CityServlet
package com.suse.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.suse.dao.CityDao;
import com.suse.dao.impl.CityDaoImpl;
import com.suse.entity.City;
import net.sf.json.JSONArray;
/**
* Servlet implementation class CityServlet
*/
@WebServlet("/citylist")
public class CityServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
try {
//获取参数
int pid = Integer.parseInt(request.getParameter("pid"));
//找出所有城市数据
CityDao cityDao = new CityDaoImpl();
List<City> list = cityDao.findCity(pid);
System.out.println(list.get(0).getCname());
//返回数据把list--->json数据
JSONArray jsonArray=JSONArray.fromObject(list);
String json=jsonArray.toString();
System.out.println("json="+json);
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(json);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
CityDao
package com.suse.dao;
import java.util.List;
import com.suse.entity.City;
public interface CityDao {
//返回的是一个城市集合
List<City> findCity(int pid) throws Exception ;
}
CityDaoImpl
package com.suse.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.PreparedStatement;
import com.suse.dao.CityDao;
import com.suse.entity.City;
import com.suse.util.DbHelper;
public class CityDaoImpl implements CityDao {
@Override
public List<City> findCity(int pid) throws Exception {
// TODO Auto-generated method stub
List<City> list = new ArrayList<City>();
//City city = new City();对象不应再次创建,而是每次查询出来要在循环里创建对象
Connection conn = DbHelper.getConn();
String sql = "select * from city where pid = ?";
PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1, pid);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
City city = new City();
city.setId(rs.getInt("id"));
city.setCname(rs.getString("cname"));
city.setPid(rs.getInt("pid"));
System.out.println(rs.getInt("id"));
list.add(city);
}
return list;
}
}
json.js
$(function() {
// 1.找到省份元素
$("#province").change(function() {
// 2.一旦里面的值发生可改变,那么就去请求的该省份的元素
// $.post(url,参数,回调函数);
var pid = $(this).val();
$.post("citylist", {
pid : pid
}, function(data, status) {
// alert("huidiao"+data);
/*
* [{ "cname": "成都", "id": 5, "pid": 2 }, { "cname": "绵阳", "id": 6,
* "pid": 2 }, { "cname": "宜宾", "id": 7, "pid": 2 }, { "cname":
* "广安", "id": 8, "pid": 2 }]
*/
// 先清空
$("#city").html("<option value=''>-请选择-");
// 在遍历
$(data).each(function(index, c) {
// alert(c.cname);
$("#city").append("<option value='" + c.id + "'>" + c.cname);
});
}, "json");
});
});
city.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String path = request.getContextPath();
out.print(path);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="<%=path%>/js/jquery-3.2.1.js"></script>
<script src="js/json.js"></script>
</head>
<body>
省份:<select name="province" id="province">
<option value="">-请选择-
<option value="1">广东
<option value="2">四川
<option value="3">重庆
<option value="4">湖南
</select>
城市:
<select name="city" id="city">
<option value="">-请选择-
</select>
</body>
</html>
DbHelper
package com.suse.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbHelper {
private static String URL = "jdbc:mysql://127.0.0.1:3306/ajax?useUnicode=true&characterEncoding=utf-8";
private static String Driver = "com.mysql.jdbc.Driver";
private static String user = "root";
private static String password = "";
public static Connection getConn() throws Exception {
Class.forName(Driver);
Connection conn = DriverManager.getConnection(URL, user, password);
return conn;
}
}
City.java
package com.suse.entity;
public class City {
private int id;
private String cname;
private int pid;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
}