jsp下拉列表怎么写_如何实现省市关联的下拉列表

本文介绍如何在jsp中创建省市关联的下拉列表,当选择省份时,城市下拉列表动态显示相应省份的城市。通过ajax和Servlet实现功能,详细讲解了jsp页面、Ajax关键代码和Servlet中的关键代码。

c69ccb4ce9ab4551bc6e2b0b7b534305.gif

185c9aab613123acc36477046c1be51e.png

前言:在某些电商网站或者APP中,通常填写地址时,会有这样的功能:当我们选择的省份是“山东”时,则城市的下拉列表里所展示的便是山东的城市,当选择的省份是“山西”时,城市的下拉列表所展示的便是山西的城市,今天,我们就来看看,这样的功能通过java是如何实现的?

先来看看运行效果:

048e4339c1a4b320ffcdc91d83ca2502.gif

这是一个简单的案例,如果还有别的需求,可以自行扩展。

接下来看看怎么实现?

01

Jsp页面

首先,看运行效果,可得需要三个下拉列表,第一个是省份,第二个是城市,第三个则是景点,三个下拉列表的代码如下:

省份:<select id="sheng">
         <option value="请选择">请选择option>
           <option value="山东">山东option>
           <option value="山西">山西option>
       select>
       城市:<select id="shi">select>
    景点:<select id="jing">select>

代码解析:先在省份的下拉列表中初始化了两个省份,山东和山西(此处只举这两个省,别的可以下来自行补充),由于我们并不知道用户会选择哪个省份,所以姑且让其空着,待会儿动态的添加,景点也是一样的道理。

02

Ajax关键代码

当然,该功能使用js也可以实现,只是今天正好看到了ajax,所以就用ajax结合jquery来实现。下面是关键代码:

$("#sheng").change(function(){
          //获取当前选中的省份
          var sheng = $("#sheng").val();
          $.getJSON("AjaxServlet",
                "tag=jsonTest&&county="+sheng,
                function(data){
                  $("#shi").html("请选择");
                  for(var i in data){
                    $("#shi").append(""+data[i]+"");
                  }
                }
          );
        });

当改变省份的下拉列表时,执行后面的操作,初始化城市下拉列表。

public void jsonTest(HttpServletRequest request,HttpServletResponse response) throws IOException{
    PrintWriter out = response.getWriter();
    String county = request.getParameter("county");
    List list = new ArrayList();if(county.equals("山东")){
      list.add("济南");
      list.add("德州");
      list.add("齐河");
      list.add("日照");
      list.add("烟台");
      list.add("威海");
      list.add("青岛");
      list.add("聊城");
    }else if(county.equals("山西")){
      list.add("吕梁");
      list.add("太原");
      list.add("大同");
      list.add("榆次");
      list.add("晋城");
      list.add("临汾");
      list.add("汾阳");
      list.add("柳林");
    }
    String jsonStr = JSON.toJSONString(list);out.print(jsonStr);
  }

代码解析:先获取到用户选择的省份,然后通过ajax提交到Servlet中,在Servlet中构建该省份的城市集合,最后转换成json格式的收据传回json页面中,在ajax的回调函数中,将json数据解析添加至城市的下拉列表中。

03

Servlet中的关键代码

根据城市获取景点也是同样的原理,jsp中的关键代码如下:

//当改变城市的下拉列表时
        $("#shi").change(function(){
          //获取当前选中的是哪个城市
          var city = $("#add").val();
          $.getJSON(
            "AjaxServlet",
            "tag=city&&city="+city,
            function(data){
            $("#jing").html("请选择");
              for(var i in data){
                $("#jing").append(""+data[i]+"");
              }
            }
          );
        });

Servlet中的关键代码如下:

//获取景点
  public void getJingDian(HttpServletRequest request,HttpServletResponse response) throws IOException{
    PrintWriter out = response.getWriter();
    
    //获取城市
    String city = request.getParameter("city");
    Mapmap = new HashMap();if(city.equals("济南")){map.put("quan","大明湖");map.put("qian","千佛山");map.put("jing","省博物馆");
    }else if(city.equals("德州")){map.put("pa","德州扒鸡");map.put("pu","德州扑克");
    }
    String jsonObject = JSON.toJSONString(map);
    System.out.println(jsonObject);
    out.print(jsonObject);
  }
往期精彩

PPT大赛一等奖颁奖

2020-12-08

7a42cb357f74a0a58a62c209cc123304.png

PPT大赛二等奖颁奖

2020-12-08

4fb31b3b2e7e612a9bd5f08ba4734207.png

PPT大赛三等奖颁奖

2020-12-08

1f38855c7b3816cbb4c2ed4182289401.png

今天你们表现的真棒!!!

2020-12-07

67db61117c897e1d39bc75045520e3aa.png

学生一天的生活状态缩影

2020-12-06

72e0c5049ef360f854d17c9613192efd.png

我们漫长的人生旅途中,态度永远决定一切!!!

2020-12-05

7ac0dc27a84b8d1b1b41794c77f87729.png

让优秀成为一种习惯!

2020-12-04

9fb02b5469223945bd2c3f40aec1e425.png 659975645ad2601cb5c9fbcb494e2439.png25b93cc880badef019c95f08613111fd.png点分享97066755ad291acd290ce16b516b1c57.png点点赞ff83743b43971c2d0d91407b77c5fe99.png点在看
版本:v1.2 ----------------------------------------------- (C) Oran Day(likecode#gmail.com) ----------------------------------------------- ----------------------------------------------- 文件夹说明: - ChinaRegions_Complained 已编译后的dll - ChinaRegions_Source - 服务器控件源码项目 - html - 演示代码级源测试代码 ----------------------------------------------- ----------------------------------------------- ChinaRegion 文件名:OranChinaRegion.dll 自我说明XML:OranChinaRegion.XML 描述: 中国行政区域二级联系菜单,根据上级行政区加载下级行政区列表 XML数据驱动,可自定义添加、删除,简易更新 支持回发恢复状态,已正确设定行政区可自动选定和加载各级行政区数据 其它说明: 应用网站必须存在行政区域的数据XML文件,默认放于应用页面同级目录的oran/regions下,其中regions.xml为一级行政区数据,其它均为二级行政区数据 可自定义修改XML目录,在web.config/appSettings/ChinaRegionXmlFolderPath 配置,e.g.:/oran/regions 创建实例至少指定 runat 和 ID 属性。 应用: 1.为网站添加DLL引用 引用OranChinaRegion.dll 2.复制XML文件至网站 3.注册控件 e.g.: 4.在您期望的位置插入该控件, e.g.: 5.获取值 ParentRegion 获取或设置一级行政区 ChildRegion 获取或设置二级行政区 e.g: string parRgn = region1.ParentRegion; if (parRgn.Length > 0) Response.Write("您选择的是:" + parRgn); string chdRgn = region1.ChildRegion; if (chdRgn.Length > 0) Response.Write(" - " + chdRgn); 6.减少网络传输量,提高网络传输效率,您可以将XML压缩再应用于实际网站。 7.更多参数请参考自我说明XML。 8.期待您报告BUG:)。 -----------------------------------------------
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值