1. 数据库建表语句:
create table Province(
pid int(11) not null primary key,
pname varchar(100)
)
create table city(
cid int(11) not null primary key,
cname varchar(100),
pid int(11)
)
create table district(
did int(11) not null primary key,
dname varchar(100),
cid int(11)
)
2. 建立VO 实现类:
3. 建立数据库驱动连接:
//MySQL数据库连接驱动
public class SjLDriver {
private final String DRIVER="com.mysql.jdbc.Driver";
private final String URL="jdbc:mysql://localhost:3306/test";
private final String USER="root";
private final String PWD="guoliang";
private Connection conn;
public SjLDriver(){
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PWD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}
}
4. 建立DAO 接口:
public interface SjLDAO {
public List getPro()throws SQLException; //省份
public List getCity(int pid)throws SQLException; //城市
public List getDistrictVO(int cid)throws SQLException; //地区
}
5. 建立DAOImpl接口实现类:
public class SjLDAOImpl implements SjLDAO {
private Connection conn;
private PreparedStatement ppt;
private ResultSet res;
public List getCity(int pid) throws SQLException {
// TODO 城市
SjLDriver sb = new SjLDriver();
conn=sb.getConnection();
List list = new ArrayList();
String sql="select cid ,cname,pid from city where pid=?";
ppt=conn.prepareStatement(sql);
ppt.setInt(1,pid);
res=ppt.executeQuery();
while(res.next()){
CityVO cb = new CityVO();
cb.setCid(res.getInt("cid"));
cb.setCname(res.getString("cname"));
cb.setPid(res.getInt("pid"));
list.add(cb);
}
return list;
}
public List getDistrictVO(int cid) throws SQLException {
// TODO 区域
SjLDriver sb = new SjLDriver();
conn=sb.getConnection();
List list = new ArrayList();
String sql ="select did,dname,cid from district where cid=?";
ppt=conn.prepareStatement(sql);
ppt.setInt(1,cid);
res=ppt.executeQuery();
while(res.next()){
DistrictVO pp = new DistrictVO();
pp.setDid(res.getInt("did"));
pp.setDname(res.getString("dname"));
pp.setCid(res.getInt("cid"));
list.add(pp);
}
return list;
}
public List getPro() throws SQLException {
// TODO 省份
SjLDriver sb = new SjLDriver();
conn=sb.getConnection();
List list = new ArrayList();
String sql="select * from province";
ppt=conn.prepareStatement(sql);
res=ppt.executeQuery();
while(res.next()){
ProvinceVO pp = new ProvinceVO();
pp.setPid(res.getInt("pid"));
pp.setPname(res.getString("pname"));
list.add(pp);
}
return list;
}
}
6. 创建工厂
public class SjLDFactory {
public static SjLDAO getDisplay(){
return new SjLDAOImpl();
}
}
9. 创建servlet实现Http
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String action= request.getParameter("action");
if("pro".equals(action)){
SjLDAO hhp = new SjLDAOImpl();
try {
List list = hhp.getPro();
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i = 0;i
sb.append(""+list.get(i).getPname()+"");
}
sb.append("");
String s = sb.toString();
PrintWriter out = response.getWriter();
response.setContentType("text/xml;UTF-8");
response.setCharacterEncoding("UTF-8");
out.println(s);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if("changPro".equals(action)){
String pid =request.getParameter("pid");
int j = Integer.parseInt(pid);
SjLDAO hhp = new SjLDAOImpl();
try {
List list = hhp.getCity(j);
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i=0;i
sb.append(""+list.get(i).getCname()+"");
}
sb.append("");
String s = sb.toString();
PrintWriter out = response.getWriter();
response.setContentType("text/xml;UTF-8");
response.setCharacterEncoding("UTF-8");
out.println(s);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if("duanPro".equals(action)){
String cid = request.getParameter("cid");
int j= Integer.parseInt(cid);
SjLDAO hhp = new SjLDAOImpl();
try {
List list = hhp.getDistrictVO(j);
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i = 0;i
sb.append(""+list.get(i).getDname()+"");
}
sb.append("");
String s = sb.toString();
PrintWriter out = response.getWriter();
response.setContentType("text/xml;UTF-8");
response.setCharacterEncoding("UTF-8");
out.println(s);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
10. 配置web.xml
11. 添加jquery.js 框架
12. html页面
三级联动实例$(document).ready(function(){
$.ajax({
url:'SjLdServlet',
typt:'post',
data:'action=pro',
dateType:'xml',
success:function(data){
$(data).find('pr').each(function(){
var id=$(this).attr("value");
var text=$(this).text();
$('#select1').append(""+text+"")
})
}
})
$('#select1').change(function(){
var text=$("select[id='select1'] option[selected]").text();
var pid=$("select[id='select1'] option[selected]").attr("value");
$.ajax({
url:'SjLdServlet',
typt:'post',
data:'action=changPro&pid='+pid+'&text='+text,
dataType:'xml',
success:function(data){
$('#select2').html('');
$(data).find('city').each(function(){
var id=$(this).attr("value");
var text=$(this).text();
$('#select2').append(""+text+"");
});
}
})
})
$('#select2').change(function(){
var text=$("select[id='select2'] option[selected]").text();
var cid=$("select[id='select2'] option[selected]").attr("value");
$.ajax({
url:'SjLdServlet',
type:'post',
data:'action=duanPro&cid='+cid+'&text='+text,
dataType:'xml',
success:function(data){
$('#select3').html('');
$(data).find('district').each(function(){
var id=$(this).attr("value");
var text=$(this).text();
$('#select3').append(""+text+"");
});
}
})
})
})
省: 请选择 | 市: 请选择 | 县: 请选择 |