js实现省市县三级级联

jsp文件如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
		<script type="text/javascript" src="./js/jquery-1.8.3.min.js"></script>
		<script type="text/javascript" src="./js/json2.js"></script>
	</head>
	<body>
		<select id="province" onchange="getCity()">
			<option value="">--请选择省份--</option>
		</select>
		
		<select id="city" onchange="getCounty()">
			<option value="">--请选择市--</option>
		</select>
		
		<select id="county">
			<option value="">--请选择县/--</option>
		</select>
		<script type="text/javascript">
			var object = {
				url:"./DataServlet?code="+"",
				type:"get",
				success:function(data){
					var provinces = JSON.parse(data);
					var options = "<option value=\"\">--请选择省份--</option>";
					for(var i=0;i<provinces.length;i++){
						options = options+"<option value=\""+provinces[i].code+"\">"+provinces[i].name+"</option>"
					}
					$("#province").empty();
					$("#province").append(options);
				}
			};
			$.ajax(object);
			
			function getCity(){
				var code = $("#province").val();
				if(code==""){
					$("#city").empty();
					$("#county").empty();
					$("#city").append("<option value=\"\">--请选择市--</option>");
					$("#county").append("<option value=\"\">--请选择县/区--</option>");
					return;
				}
				var object = {
					url:"./DataServlet?code="+code,
					type:"get",
					success:function(data){
						var cities = JSON.parse(data);
						var options = "<option value=\"\">--请选择市--</option>";
						for(var i=0;i<cities.length;i++){
							options = options+"<option value=\""+cities[i].code+"\">"+cities[i].name+"</option>"
						}
						$("#city").empty();
						$("#city").append(options);
						$("#county").empty();
						$("#county").append("<option value=\"\">--请选择县/区--</option>");
					}
				};
				$.ajax(object);
			}
			
			function getCounty(){
				var code = $("#city").val();
				if(code==""){
					$("#county").empty();
					$("#county").append("<option value=\"\">--请选择县/区--</option>");
					return;
				}
				var object = {
					url:"./DataServlet?code="+code,
					type:"get",
					success:function(data){
						var counties = JSON.parse(data);
						var options = "<option value=\"\">--请选择县/区--</option>";
						for(var i=0;i<counties.length;i++){
							options = options+"<option value=\""+counties[i].code+"\">"+counties[i].name+"</option>"
						}
						$("#county").empty();
						$("#county").append(options);
					}
				};
				$.ajax(object);
			}
		</script>
	</body>
</html>

servlet文件:

package com.jd.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.jd.imp.IAreaService;
import com.jd.service.AreaService;
import com.jd.util.db.DBUtil;
import com.jd.util.db.IRowMapper;
import com.jd.vo.Area;

public class DataServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private IAreaService areaService = new AreaService();

	@Override
	public void destroy() {
		super.destroy();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/plain; charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		//获取code值,即省份代码
		String code = request.getParameter("code");
		List<Area> list = areaService.select(code);
		/*String code = request.getParameter("code");
		class RowMapper implements IRowMapper{
			//将数据存储到list集合中
			List<Area> list = new ArrayList<Area>();
			
			public void rowMapper(ResultSet resultSet) {
				try {
					while(resultSet.next()) {
						list.add(new Area(resultSet.getString("id"), resultSet.getString("name"), resultSet.getString("code"), resultSet.getString("parent_code")));
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		//从数据库中查询数据
		String sql = "select * from area where parent_code=?";
		RowMapper rowMapper = new RowMapper();
		DBUtil.select(sql, rowMapper, code);
		
		List<Area> list = rowMapper.list;
		*/
		//json 数据结构:将Java对象转换为字符串

		PrintWriter out = response.getWriter();
		out.print(new Gson().toJson(list));
		out.flush();
		out.close();
	}
}

为了使代码方便管理,设置成如下结构:
在这里插入图片描述
接口如下:

package com.jd.imp;

import com.jd.vo.Area;

import java.util.List;

public interface IAreaService {
    List<Area> select(String code);
}

package com.jd.imp;

import com.jd.vo.Area;

import java.util.List;

public interface IAreaDao {
    List<Area> select(String code);
}

实现类如下:

package com.jd.service;

import com.jd.dao.AreaDao;
import com.jd.imp.IAreaDao;
import com.jd.imp.IAreaService;
import com.jd.vo.Area;

import java.util.List;

public class AreaService implements IAreaService {
    private IAreaDao areaDao = new AreaDao();
    @Override
    public List<Area> select(String code) {
        if (code==null){
            code="";
        }
        return  areaDao.select(code);
    }
}

package com.jd.dao;

import com.jd.imp.IAreaDao;
import com.jd.util.db.DBUtil;
import com.jd.util.db.IRowMapper;
import com.jd.vo.Area;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AreaDao implements IAreaDao {
    @Override
    public List<Area> select(String code) {
        class RowMapper implements IRowMapper {
            //将数据存储到list集合中
            List<Area> list = new ArrayList<Area>();

            public void rowMapper(ResultSet resultSet) {
                try {
                    while(resultSet.next()) {
                        list.add(new Area(resultSet.getString("id"), resultSet.getString("name"), resultSet.getString("code"), resultSet.getString("parent_code")));
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        //从数据库中查询数据
        String sql = "select * from area where parent_code=?";
        RowMapper rowMapper = new RowMapper();
        DBUtil.select(sql, rowMapper, code);
        return rowMapper.list;

    }
}

Area对象:

package com.jd.vo;

public class Area {
	private String id;
	private String name;
	private String code;
	private String parentCode;
	
	public Area(String id, String name, String code, String parentCode) {
		this.id = id;
		this.name = name;
		this.code = code;
		this.parentCode = parentCode;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getParentCode() {
		return parentCode;
	}
	public void setParentCode(String parentCode) {
		this.parentCode = parentCode;
	}
	@Override
	public String toString() {
		return "Area [id=" + id + ", name=" + name + ", code=" + code + ", parentCode=" + parentCode + "]";
	}
}

util包下为连接数据库工具,用于连接数据库并进行数据操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值