java实现三级联动查询_Jquery实现三级联动源代码(Java)

该博客介绍了一个使用Java实现的Web应用程序,通过Servlet、DAO模式和jQuery进行数据库交互,实现在HTML页面上展示省份、城市和地区的三级联动下拉菜单。数据库建表包括省份、城市和地区的表,DAO接口及其实现类处理数据库查询,工厂模式用于创建DAO实例,Servlet处理HTTP请求并返回XML数据,最后jQuery负责动态加载下拉选项。
摘要由CSDN通过智能技术生成

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+"");

});

}

})

})

})

省: 请选择市: 请选择县: 请选择
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值