web项目的菜单展示-三级联动菜单展示

三级联动菜单的展示

用的是Struts2 + Mybatis框架进行操作

文件结构

在这里插入图片描述在这里插入图片描述

核心代码

CasCade.jsp
<%@ page pageEncoding="UTF-8" contentType="text/html;UTF-8" isELIgnored="false"%>
<html>
<head>
    <script type="application/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.min.js">
    </script>
    <script type="application/javascript">
        $(function () {
            //展示所有的省份
            $.ajax({
                url:"${pageContext.request.contextPath}/cascade/showAllProvinces",
                type:"GET",
                dataType:"json",
                success:function (provinces) {
                    //把所有的省份展示在第一个下拉列列表中
                    for (var i=0;i<provinces.length;i++){
                        //创建option标签
                        var option=$("<option value="+provinces[i].code+">"+provinces[i].name+"</option>");
                        $("#province").append(option);
                    }
                    //初始化北京对应的市
                    $.ajax(
                        {
                            url:"${pageContext.request.contextPath}/cascade/showCitys",
                            type:"GET",
                            data:"provincecode="+110000,
                            dataType:"json",
                            success:function (citys) {
                                //每次添加清空
                                $("#city").empty();
                                //渲染该省份对应的市
                                for (var i=0;i<citys.length;i++){
                                    var option=$("<option value="+citys[i].code+">"+citys[i].name+"</option>")
                                    $("#city").append(option);
                                }
                                //把第一个市对应的第一个区展示在第三个下拉框中
                                $.ajax({
                                    url:"${pageContext.request.contextPath}/cascade/showAreas",
                                    type:"GET",
                                    data:"citycode="+110100, //把第一个市对应的code传入
                                    dataType:"json",
                                    success:function (areas) {
                                        $("#area").empty();
                                        for (var i=0;i<areas.length;i++){
                                            var option=$("<option>"+areas[i].name+"</option>");
                                            $("#area").append(option);
                                        }
                                    }
                                })
                            }
                        }
                    )
                }
            });
            //给第一个省份的下拉框添加onchange事件
            $("#province").change(function () {
                //获取用户选中的code
                var  provincecode=$("#province :selected").val();
                //把省份code传入后台
                $.ajax(
                    {
                        url:"${pageContext.request.contextPath}/cascade/showCitys",
                        type:"GET",
                        data:"provincecode="+provincecode,
                        dataType:"json",
                        success:function (citys) {
                            //每次添加清空
                            $("#city").empty();
                            //渲染该省份对应的市
                            for (var i=0;i<citys.length;i++){
                                var option=$("<option value="+citys[i].code+">"+citys[i].name+"</option>")
                                $("#city").append(option);
                            }
                            //把第一个市对应的第一个区展示在第三个下拉框中
                            $.ajax({
                                url:"${pageContext.request.contextPath}/cascade/showAreas",
                                type:"GET",
                                data:"citycode="+citys[0].code, //把第一个市对应的code传入
                                dataType:"json",
                                success:function (areas) {
                                    $("#area").empty();
                                    for (var i=0;i<areas.length;i++){
                                        var option=$("<option>"+areas[i].name+"</option>");
                                        $("#area").append(option);
                                    }
                                }
                            })
                        }
                    }
                )
            });
            //给第二个下拉框填充change事件
            $("#city").change(function () {
                //获取选中的citycode
              var  citycode= $("#city option:selected").val();
               $.ajax({
                   url:"${pageContext.request.contextPath}/cascade/showAreas",
                   type:"GET",
                   data:"citycode="+citycode,
                   dataType:"json",
                   success:function (areas) {
                       $("#area").empty();
                       for (var i=0;i<areas.length;i++){
                        var option=$("<option>"+areas[i].name+"</option>");
                        $("#area").append(option);
                       }
                   }
               })
            })
        })
    </script>
</head>
<body>
<select id="province">
</select>
<select id="city">
</select>
<select id="area">
</select>
</body>
</html>
一级菜单
public class ProvinceAction  extends ActionSupport {

    public  String  showAllProvinces(){
        ProvinceService ps=new ProvinceServiceImpl();
        //获取到所有省份
        List<Province> provinces = ps.showProvinces();
        //把List集合转换为JSON协议串
        String jsonString = JSON.toJSONString(provinces);
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("UTF-8");
        try {
            PrintWriter out = response.getWriter();
            out.print(jsonString);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null;
    }
}
二级菜单
public class CityAction extends ActionSupport {
    //接受省份code  provincecode
    private  String  provincecode;

    public String getProvincecode() {
        return provincecode;
    }

    public void setProvincecode(String provincecode) {
        this.provincecode = provincecode;
    }


    public  String   showCitys(){
        CityService cs= new CityServiceImpl();
        //查询该省份对应的所有的市
        List<City> cities = cs.showCitys(provincecode);
        //把List集合转换为JSON协议串
        String jsonString = JSON.toJSONString(cities);
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("UTF-8");
        try {
            PrintWriter out = response.getWriter();
            out.print(jsonString);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null;
    }
}
三级菜单
public class AreaAction  extends ActionSupport {
    //接收citycode
    private  String  citycode;

    public String getCitycode() {
        return citycode;
    }

    public void setCitycode(String citycode) {
        this.citycode = citycode;
    }


    public  String   showAreas(){
        AreaService as=new AreaServiceImpl();
        List<Area> areas = as.showAreas(citycode);
        //把List集合转换为JSON协议串
        String jsonString = JSON.toJSONString(areas);
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("UTF-8");
        try {
            PrintWriter out = response.getWriter();
            out.print(jsonString);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null;
    }
}

实体类

public class Area {
    private  Integer  id;
    private  String   code;
    private  String   name;
    private  String   citycode;

public class City {
    private  Integer  id;
    private  String   code;
    private  String   name;
    private  String   provincecode;

public class Province {
    private  Integer  id;
    private  String   code;
    private  String   name;

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java我跟你拼了

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值