JSON--实现省市联动

JSON 举例实现省市联动

配置

在使用前需要配置一下JSON才能使用,这里使用jar包配置
JSON jar包

JSON的基本用法

数字不加引号,布尔值不加引号

var student={"name":"三毛","sex":"男","age":20,"contact":{"phone":"13153288888","email":"sunshouyu@wanmait.com"}};
    console.log(student.name);
    console.log(student); 
    
var student2={"name":"四毛","sex":"男","age":22,"contact":null,"hasGirl":true};
var students=[{"name":"三毛","sex":"男","age":20,"contact":{"phone":"13153288888","email":"sunshouyu@wanmait.com"}},
        {"name":"四毛","sex":"男","age":22}];
    console.log(students[1].name);
    console.log(student.contact.email);

省市联动 – JSON实现

JSP代码

<select id="province">
    <c:forEach items="${requestScope.provinces}" var="province">
        <option value="${province.id}">${province.title}</option>
    </c:forEach>
</select>

<select id="city"></select>
<script src="<%=path%>/static/js/jquery-3.3.1.min.js"></script>
<script>
$(function(){
    initCity();
    $("#province").change(initCity);
});
function initCity(){
    var provinceId = $("#province").val();
    //清空下拉项
    $("#city").empty();

//ajax json 的两种写法:
/*    $.ajax({
        url:"<%=path%>/webservlet/ProvinceWebServlet?action=findCitiesByProvince",
        data:{provinceId:provinceId},
        dataType:"json",
        success:function (cities) {
            for(var i=0;i<cities.length;i++)
            {
                $("#city").append("<option value=\""+cities[i].id+"\">"+cities[i].title+"</option>");
            }
        }
    });*/
    
    //第二种
    $.getJSON("<%=path%>/webservlet/ProvinceWebServlet?action=findCitiesByProvince",
        {provinceId:provinceId},
        function (cities) {
            for(var i=0;i<cities.length;i++)
            {
                $("#city").append("<option value=\""+cities[i].id+"\">"+cities[i].title+"</option>");
            }
    })
}

Servlet代码

@WebServlet(name = "ProvinceWebServlet",value = "/webservlet/ProvinceWebServlet")
public class ProvinceWebServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        if("findAll".equals(action))
        {
            this.findAll(request,response);
        }
        else if("findCitiesByProvince".equals(action))
        {
            this.findCitiesByProvince(request,response);
        }

    }
    protected void findCitiesByProvince(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Integer provinceId = Integer.parseInt(request.getParameter("provinceId"));
        List<City> cities = CityDAO.getDao().findAllByProvince(provinceId);
        JsonConfig config = new JsonConfig();
        //设置排除哪些属性,这些属性不解析成json
        config.setExcludes(new String[]{"sort","province","enable"});
        //解析
        JSONArray arr = JSONArray.fromObject(cities,config);
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print(arr);
        out.close();

    }
    protected void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Province> provinces = ProvinceDAO.getDao().findAll();
        request.setAttribute("provinces",provinces);
        this.getServletContext().getRequestDispatcher("/json.jsp").forward(request,response);
    }
    }

DAO代码

cityDAO

 public List<City> findAllByProvince(Integer provinceId)
    {
        List<City> cities = new ArrayList<>();
        City city = null;
        String sql = "select * from city where enable=1 and provinceId=? order by sort desc";
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = DBHelper.getHelper().getConn();
            ps = conn.prepareStatement(sql);
            ps.setInt(1,provinceId);
            rs = ps.executeQuery();
            Province province = null;
            while(rs.next())
            {
                city = new City(rs.getInt("id"),
                        rs.getString("title"),
                        rs.getInt("sort"),
                        true);
                province = new Province();
                province.setId(rs.getInt("provinceId"));
                city.setProvince(province);
                cities.add(city);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBHelper.getHelper().close(rs,ps,conn);
        }
        return cities;
    }

provinceDAO

public List<Province> findAll() {
        List<Province> provinces = new ArrayList<>();
        Province province = null;
        String sql = "select * from province where enable=1 order by sort desc";
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = DBHelper.getHelper().getConn();
            ps = conn.prepareStatement(sql);

            rs = ps.executeQuery();
            while(rs.next())
            {
              province = new Province(rs.getInt("id"),
                      rs.getString("title"),
                      rs.getInt("sort"),
                      true);

              provinces.add(province);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBHelper.getHelper().close(rs,ps,conn);
        }
        return provinces;
    }

测试类

public class CityDAOTest {
    @Test
    public void testFindAll()
    {
        List<City> cities = CityDAO.getDao().findAllByProvince(1);
        //[{},{}]
        //JSON.lib
        JSONArray arr = JSONArray.fromObject(cities);
        System.out.println(arr);
        JsonConfig config = new JsonConfig();
        config.setExcludes(new String[]{"sort","province","enable"});
        arr = JSONArray.fromObject(cities,config);
        System.out.println(arr);
        System.out.println("===============================");
        City city = cities.get(0);
        JSONObject obj = JSONObject.fromObject(city,config);
        System.out.println(obj);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值