【JavaWeb-jQuery】网站 – 应用 Ajax,jQuery 实现级联查询

网站功能:

  • 网页打开的时候,自动加载省份信息,用户通过选择不同的省份列表值,对应的城市信息也随之变化。

网站结构:

网站预览:

建表语句:

CREATE TABLE pro (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(255) DEFAULT NULL,
    jiancheng varchar(255) DEFAULT NULL,
    shenghui varchar(255) DEFAULT NULL,
    PRIMARY KEY (id)
);

INSERT INTO pro VALUES ('1','河北','冀','石家庄');
INSERT INTO pro VALUES ('2','山西','晋','太原市');
INSERT INTO pro VALUES ('3','内蒙古','蒙','呼和浩特市');
INSERT INTO pro VALUES ('4','辽宁','辽','沈阳');
INSERT INTO pro VALUES ('5','江苏','苏','南京');
INSERT INTO pro VALUES ('6','浙江','浙','杭州');
INSERT INTO pro VALUES ('7','安徽','皖','合肥');
INSERT INTO pro VALUES ('8','福建','闽','福州');
INSERT INTO pro VALUES ('9','江西','赣','南昌');

DROP TABLE IF EXISTS city;
CREATE TABLE city (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  provinceid int(11) DEFAULT NULL,
  PRIMARY KEY (id)
);

INSERT INTO city VALUES ('1', '石家庄市', '1');
INSERT INTO city VALUES ('2', '秦皇岛', '1');
INSERT INTO city VALUES ('3', '保定市', '1');
INSERT INTO city VALUES ('4', '张家口', '1');
INSERT INTO city VALUES ('5', '南昌市', '9');
INSERT INTO city VALUES ('6', '九江市', '9');
INSERT INTO city VALUES ('7', '宜春市', '9');
INSERT INTO city VALUES ('8', '福州市', '8');
INSERT INTO city VALUES ('9', '厦门市', '8');
INSERT INTO city VALUES ('10', '泉州市', '8');
INSERT INTO city VALUES ('11', '龙岩市', '8');
INSERT INTO city VALUES ('12', '太原', '2');
INSERT INTO city VALUES ('13', '大同', '2');
INSERT INTO city VALUES ('14', '呼和浩特', '3');
INSERT INTO city VALUES ('15', '包头', '3');
INSERT INTO city VALUES ('16', '呼伦贝尔', '3');

index.jsp(网站欢迎资源文件):

<%@ page contenttype="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>&#x7701;&#x5E02;&#x7EA7;&#x8054;&#x67E5;&#x8BE2;</title>

    <script type="text/javascript" src="js/jquery-3.6.0.js"></script>
    <script type="text/javascript">
        //自定义函数,用于加载省份数据
        function getData() {
            $.ajax({
                url: "queryProvince",
                dataType: "json",
                success: function (resp) {
                    //删除旧的省份select子对象
                    $("#province").empty();
                    //保留"--请选择--"子对象
                    $("#province").append("<option value=''>" + "--请选择--" + "</option>");
                    //将省份名称打到省份select上
                    $.each(resp, function (i, n) {
                        $("#province").append("<option value='" + n.provinceId + "'>" + n.provinceName + "</option>");
                    });
                }
            });
        }

        //自定义函数,用于处理服务端返回的数据
        function callBack(resp) {
            //清空旧的省份列表子对象
            $("#city").empty();
            $.each(resp,function (i, n) {
                $("#city").append("<option value '" + n.cityId + "'>" + n.cityName + "</option>");
            });
        }

        $(function () {
            //加载省份信息
            getData();

            //省份列表选中值改变时,调用的方法:
            $("#province").change(function () {
                //获取已被选中的列表值
                var id = $("#province>option:selected").val();
                //以 get 方式向服务端发送请求
                $.get("queryCity", {provinceId: id}, callBack, "json");

            });

        })

    </script>
</head>
<body>
<p>&#x7701;&#x5E02;&#x7EA7;&#x8054;&#x67E5;&#x8BE2;&#xFF0C;&#x4F7F;&#x7528; Ajax&#xFF0C;jQuery</p>
<table border="1px">
    <tr>
        <td>&#x7701;&#x4EFD;&#xFF1A;</td>
        <td>
            <select id="province">
                <option value>--&#x8BF7;&#x9009;&#x62E9;--</option>
            </select>
        </td>
    </tr>

    <tr>
        <td>&#x57CE;&#x5E02;&#xFF1A;</td>
        <td>
            <select id="city">
                <option value>--&#x8BF7;&#x9009;&#x62E9;--</option>
            </select>
        </td>
    </tr>
</table>
</body>
</html></%@>

com.burnyouth.util.JdbcUtil(JDBC工具类):

package com.burnyouth.util;

import java.sql.*;

public class JdbcUtil {
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    private JdbcUtil() {
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/burning_youth"
                , "root", "888");
    }

    public static void close(Connection connection, Statement statement, ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

com.burnyouth.entity.Province(省份实体类):

package com.burnyouth.entity;

public class Province {
    private Integer provinceId;
    private String provinceName;

    public Province() {
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
}

com.burnyouth.entity.City(城市实体类):

package com.burnyouth.entity;

public class Province {
    private Integer provinceId;
    private String provinceName;
    private String jianCheng;
    private String shengHui;

    public Province() {
    }

    public Province(Integer provinceId, String provinceName, String jianCheng, String shengHui) {
        this.provinceId = provinceId;
        this.provinceName = provinceName;
        this.jianCheng = jianCheng;
        this.shengHui = shengHui;
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getJianCheng() {
        return jianCheng;
    }

    public void setJianCheng(String jianCheng) {
        this.jianCheng = jianCheng;
    }

    public String getShengHui() {
        return shengHui;
    }

    public void setShengHui(String shengHui) {
        this.shengHui = shengHui;
    }
}

com.burnyouth.dao.QueryProvinceDao(连接数据库,进行查询操作并返回数据):

package com.burnyouth.dao;

import com.burnyouth.entity.City;
import com.burnyouth.entity.Province;
import com.burnyouth.util.JdbcUtil;

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

public class QueryProvinceDao {
    //&#x67E5;&#x8BE2;&#x6570;&#x636E;&#x4E2D;&#x6240;&#x6709;&#x7701;&#x4EFD;
    public List<province> queryProvince(){
        Connection connection = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        List<province> provinces = new ArrayList<>();
        try {
            connection = JdbcUtil.getConnection();
            //&#x6309;&#x7167;id&#x5347;&#x5E8F;&#x8F93;&#x51FA;
            String sql = "select * from pro order by id";
            ps = connection.prepareStatement(sql);
            resultSet = ps.executeQuery();
            while (resultSet.next()) {
                Province province = new Province();
                province.setProvinceId(resultSet.getInt("id"));
                province.setProvinceName(resultSet.getString("name"));
                provinces.add(province);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtil.close(connection,ps,resultSet);
        }
        return provinces;

    }

    //&#x67E5;&#x8BE2;&#x7701;&#x4EFD;&#x5BF9;&#x5E94;&#x7684;&#x6240;&#x6709;&#x57CE;&#x5E02;
    public List<city> queryCity(Integer provinceId){
        Connection connection = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        City city = null;
        List<city> citys = new ArrayList<>();
        try {
            connection = JdbcUtil.getConnection();
            String sql = "select * from city where provinceid=?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,provinceId);
            resultSet = ps.executeQuery();
            while (resultSet.next()) {
                city = new City();
                city.setCityId(resultSet.getInt("id"));
                city.setCityName(resultSet.getString("name"));
                citys.add(city);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtil.close(connection,ps,resultSet);
        }
        return citys;

    }
}</city></city></province></province>

xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0">
    <servlet>
        <servlet-name>QueryProvinceServlet</servlet-name>
        <servlet-class>com.burnyouth.controller.QueryProvinceServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>QueryCityServlet</servlet-name>
        <servlet-class>com.burnyouth.controller.QueryCityServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>QueryProvinceServlet</servlet-name>
        <url-pattern>/queryProvince</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>QueryCityServlet</servlet-name>
        <url-pattern>/queryCity</url-pattern>
    </servlet-mapping>

    <!--设置一下欢迎资源文件-->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

com.burnyouth.controller.QueryProvinceServlet(返回 json 格式的省份信息):

package com.burnyouth.controller;

import com.burnyouth.dao.QueryProvinceDao;
import com.burnyouth.entity.Province;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.*;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class QueryProvinceServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String json = "";
        QueryProvinceDao dao = new QueryProvinceDao();
        List<province> provinces = new ArrayList<>();
        PrintWriter out = null;

        provinces = dao.queryProvince();
        //&#x5C06;list&#x8F6C;&#x4E3A;json&#x683C;&#x5F0F;&#x7684;&#x5B57;&#x7B26;&#x4E32;
        if (provinces != null) {
            //&#x8C03;&#x7528;Jackson&#x5DE5;&#x5177;&#x5E93;&#xFF0C;&#x5B9E;&#x73B0;List ---> json
            ObjectMapper objectMapper = new ObjectMapper();
            json = objectMapper.writeValueAsString(provinces);
        }

        //&#x4F7F;&#x5BA2;&#x6237;&#x7AEF;&#x6D4F;&#x89C8;&#x5668;&#x4F7F;&#x7528;&#x6B63;&#x786E;&#x7684;&#x7F16;&#x8F91;&#x5668;&#x89E3;&#x8BFB;&#x6570;&#x636E;
        response.setContentType("application/json;charset=utf-8");
        out = response.getWriter();
        //&#x8F93;&#x51FA;json&#x6570;&#x636E;
        out.write(json);
        out.flush();
        out.close();
    }
}</province>

com.burnyouth.controller.QueryCityServlet(根据客户端发送过来的省份 id ,返回对应的城市信息【json 格式】):

package com.burnyouth.controller;

import com.burnyouth.dao.QueryProvinceDao;
import com.burnyouth.entity.City;
import com.burnyouth.entity.Province;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.*;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class QueryCityServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String json = "";
        //&#x83B7;&#x53D6;&#x7701;&#x4EFD;id
        String provinceId = request.getParameter("provinceId");
        QueryProvinceDao dao = new QueryProvinceDao();
        List<city> cities = new ArrayList<>();
        PrintWriter out = null;

        cities = dao.queryCity(Integer.valueOf(provinceId));
        //&#x5C06;list&#x8F6C;&#x4E3A;json&#x683C;&#x5F0F;&#x7684;&#x5B57;&#x7B26;&#x4E32;
        if (provinceId != null && !"".equals(provinceId.trim())) {
            //&#x8C03;&#x7528;Jackson&#x5DE5;&#x5177;&#x5E93;&#xFF0C;&#x5B9E;&#x73B0;List ---> json
            ObjectMapper objectMapper = new ObjectMapper();
            json = objectMapper.writeValueAsString(cities);
        }

        response.setContentType("application/json;charset=utf-8");
        out = response.getWriter();
        //&#x8F93;&#x51FA;json&#x6570;&#x636E;
        out.write(json);
        out.flush();
        out.close();
    }
}
</city>

Original: https://www.cnblogs.com/Burning-youth/p/16086502.html
Author: 猿头猿脑的王狗蛋
Title: 【JavaWeb-jQuery】网站 – 应用 Ajax,jQuery 实现级联查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683407/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【主流技术】ElasticSearch 在 Spring 项目中的实践

    前言 ElasticSearch简称es,是一个开源的高扩展的分布式全文检索引擎。 它可以近乎实时的存储、检索数据,其扩展性很好,ElasticSearch是企业级应用中较为常见的…

    技术杂谈 2023年7月10日
    0117
  • cuda安装及百度云链接

    1、cuda11.1、11.0、10.2、10.1、10.0、8.0及其相应的cudnn版本 本篇文章是基于移动端1050ti win10安装CUDA 10.0的经验写,由于官网下…

    技术杂谈 2023年7月24日
    0100
  • idea中隐藏.idea文件夹和.iml文件

    idea中的.idea文件夹和.iml是平常几乎不使用的文件,在创建父子工程或者聚合工程时反而会对我们操作产生干扰,所以,一般情况下,我们都将其隐藏掉,步骤如下: 操作前: 具体操…

    技术杂谈 2023年6月1日
    0128
  • 我是一个垃圾

    哒哒哒…… 回收者的脚步声越来越清晰,我竭力锁紧身体让自己别那么引人注目,尽管气喘吁吁,但我仍然压抑住自己的呼吸。 终归是藏不住的,但是多活个几毫秒也是好的…

    技术杂谈 2023年7月23日
    0101
  • button按钮

    *button按钮私有属性 属性 说明 value button中的文案 posted @2020-09-04 16:53 tinyphp Views(246 ) Comments…

    技术杂谈 2023年6月1日
    0117
  • linux开机自动挂载(/etc/fstab)

    fatab 介绍 通常情况,Linux 的 /etc/fstab 文件可能有如下内容: # /etc/fstab Created by anaconda on Fri Aug 18…

    技术杂谈 2023年7月24日
    0137
  • lambda表达式常用01

    1、 优化线程代码 以前我们使用线程可能是这么使用的: 使用lambda: 再次进行优化写法: 2.Arrays.sort 排序优化 在代码中,我们会使用Arrays.sort对数…

    技术杂谈 2023年7月24日
    0107
  • 计算机系统大作业:Hello的一生

    计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机科学与技术 学 号 班 级 学 生 江水为竭 指导教师 刘宏伟 计算机科学与技术学院 202…

    技术杂谈 2023年7月11日
    098
  • 你被离职员工投诉过吗?

    同学你好,很高兴你对团队表达的问题,面对你所提问题我觉得还是有必要作下回答。 首先我个人认为你所描述 确实是开发部 某个期间 的状态,公司其他部门或多或少都有这些现象。 但我当然不…

    技术杂谈 2023年6月1日
    0108
  • 使用Streamlit快速搭建数据科学Web App

    Streamlit 是 Python 的一个用于创建 Web App 的框架,类似于 R 的 Shiny。其功能虽不如 R Shiny 强大,更不如专门的 Python Web 框…

    技术杂谈 2023年5月31日
    0107
  • 使用 Playwright 进行 E2E 测试

    1 Playwright 简介 Playwright 是由微软开源的一个Web测试和自动化的框架,它具有以下特性: 跨平台 跨浏览器 跨语言(TypeScript、JS、Pytho…

    技术杂谈 2023年5月31日
    0122
  • 不同分层中的对象的使用

    在项目中,控制层,业务层,数据层,视图层(返回值)。中分别使用了的对象,暂时不太理解这样做的好处,先记录下来。 如下: 控制层:也可以叫做入参对象, UserQuery userQ…

    技术杂谈 2023年7月23日
    083
  • 用户成长体系-规划

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/shoshana-kong/p/16498628.htm…

    技术杂谈 2023年6月1日
    0131
  • js替换字符串中的空格,换行符rn或n替换成<br>

    为了让回车换行符正确显示,需要将 \n 或 \r\n 替换成。同样地,将空格替换存 。这里我们通过正则表达式来替换。 一、替换所有的空格、回车换行符 javascript;gutt…

    技术杂谈 2023年5月31日
    0108
  • Collection和Collections有什么区别?

    1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collec…

    技术杂谈 2023年5月30日
    0111
  • Windows10公钥远程连接Linux服务器

    前言 一、环境准备 二、使用步骤 – 1.服务器安装并配置OpenSSH 2. 本地生成密钥 3. 服务器ssh添加密钥 三 总结 前言 使用公钥远程登陆Linux十分…

    技术杂谈 2023年6月21日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球