idea:java使用ajax+Servlet+JdbcTemplate实现省市县三联动

本文介绍了如何在JavaWeb环境中,利用Ajax、Servlet和Spring的JdbcTemplate模块,实现数据库中省市县数据的三联动效果。涉及到的组件包括实体类、DAO接口及其实现、Spring配置文件、JSP页面、Servlet处理类以及Web应用的部署配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个和上一篇文章是异曲同工之处,不过这个是基于javaWeb的servlet和轻量级jdbcTemplate对数据库的操作

数据库中的表:
在这里插入图片描述
在这里插入图片描述
结构目录:
在这里插入图片描述
1.Entit层

Province

public class Province {
    public Integer pid;
    public  String pname;

    public Integer getPid() {
        return pid;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }
}

City

public class City {
    public Integer cid;
    public String cname;

    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }
}

District层

public class District {
    public Integer dis;
    public String dname;

    public Integer getDis() {
        return dis;
    }

    public void setDis(Integer dis) {
        this.dis = dis;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }
}

2.Dao.Iconnectionloading

public interface Iconnectionloading {
    public List<Province> selectAll();
    public List<City> selectByPid(Integer pid);
    public List<District> selectByCid(Integer cid);
}

3.Dao.Impl.conectionloadingImpl

public class conectionloadingImpl implements Iconnectionloading {

    public JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    public List<Province> selectAll() {
        System.out.println("SelectALll");
        List<Province> provinceList=jdbcTemplate.query("select * from province",new BeanPropertyRowMapper<Province>(Province.class));
        return provinceList;
    }

    @Override
    public List<City> selectByPid(Integer pid) {
        List<City> cityList=jdbcTemplate.query("select * from city where pid=?",new BeanPropertyRowMapper<City>(City.class),pid);
        return cityList;
    }

    @Override
    public List<District> selectByCid(Integer cid) {
        List<District> districtList=jdbcTemplate.query("select * from district where cid=?",new BeanPropertyRowMapper<District>(District.class),cid);
        return districtList;
    }
}

4.spring.xml文件的配置

使用轻量级jdbcTemplate,

  <bean id="iconnectionloading" class="Dao.DaoImpl.conectionloadingImpl">
       <property name="jdbcTemplate" ref="JdbcTemplate"></property>
   </bean>
   
     <bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="datasource"/>
    </bean>
    
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property>
        <property name="password" value="123"></property>
        <property name="username" value="root"></property>
    </bean>

5.index.jsp

<head>
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            LoadProvince();
            $("#province").change(function () {
                LoadCity($(this).val());
            })
            $("#city").change(function () {
                LoadDistrict($(this).val());
            })
        })
        function LoadProvince() {
            $("#province").empty();
            $.getJSON("LoadingServlet",{action:"province"},function (data) {

                $.each(data,function (index,item) {
                    $("#province").append("<option value="+item.pid+">"+item.pname+"</option>");
                })
                LoadCity($("#province").val())
            })
        }
        function LoadCity(id) {
            $("#city").empty();
            $.getJSON("LoadingServlet",{action:"city",pid:id},function (data) {
                $.each(data,function (index,item) {
                    $("#city").append("<option value="+item.cid+">"+item.cname+"</option>");
                })
                LoadDistrict($("#city").val())
            })
        }
        function LoadDistrict(id) {
            $("#district").empty();
            $.getJSON("LoadingServlet",{action:"district",cid:id},function (data) {
                $.each(data,function (index,item) {
                    $("#district").append("<option value="+item.did+">"+item.dname+"</option>");
                })
            })
        }
    </script>
</head>
<body>
请选择省:<select id="province"></select>
请选择市:<select id="city"></select>
请选择县:<select id="district"></select>
</body>

6.MyServlet.LoadingServlet

public class LoadingServlet extends HttpServlet {

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

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("执行了doGet");
        String action=request.getParameter("action");
        JSONObject jsonObject=new JSONObject();
        BeanFactory beanFactory=new ClassPathXmlApplicationContext("spring.xml");
        Iconnectionloading iconnectionloading= (Iconnectionloading) beanFactory.getBean("iconnectionloading");
        if(action.equals("province")){
            PrintWriter printWriter=response.getWriter();
            List<Province> provinceList=iconnectionloading.selectAll();
            jsonObject.put("provinceList",provinceList);
            printWriter.print( jsonObject.get("provinceList"));

        }
        else if(action.equals("city")){
            PrintWriter printWriter=response.getWriter();
            Integer pid=Integer.parseInt(request.getParameter("pid"));
            List<City> cityList=iconnectionloading.selectByPid(pid);
            jsonObject.put("cityList",cityList);
            printWriter.print( jsonObject.get("cityList"));
        }
        else if(action.equals("district")){
            PrintWriter printWriter=response.getWriter();
            Integer cid=Integer.parseInt(request.getParameter("cid"));
            List<District> districtList=iconnectionloading.selectByCid(cid);
            jsonObject.put("districtList",districtList);
            printWriter.print( jsonObject.get("districtList"));
        }
    }

7.Web.xml文件的配置

<servlet>
    <servlet-name>LoadingServlet</servlet-name>
    <servlet-class>MyServlet.LoadingServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoadingServlet</servlet-name>
    <url-pattern>/LoadingServlet</url-pattern>
  </servlet-mapping>

8.结果显示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值