Java进阶之多级联下拉列表知识点总结


实例说明
       多级联动下拉列表是指一组相互关联的下拉列表,相邻的两个下拉列表是父子关系,改变父下拉列表的值,子下拉列表也随之改变。运行本实例,如图1所示,在页面中将显示一个三级联动下拉列表,在省和直辖市的下拉列表框中选择省份,在地级市下拉列表中将显示出该省份的地级市信息,在地级市下拉列表中选择其中一个市,在县、县级市或区下拉列表中将显示区信息。
 
   
 关键技术
        在实现本范例时,首先需要设计一个保存省市信息的XML文件,在该文件中,需要充分体现出省/直辖市、地级市和县/县级市/区之间的关系。接下来需要从XML文件中获取所需的信息,也就是解析XML文件。本实例中应用的是dom4j组件解析XML文件,下面将对应用dom4j解析XML文件进行介绍。
1.构建XML文档对象
       在解析XML文档前,需要构建要解析的XML文件所对应的XML文档对象。在获取XML文档对象时,首先需要创建SAXReader对象,然后调用该对象的read()方法获取对应的XML文档对象。SAXReader对象的read()方法的原型如下:
       public Document read(Filefile) throws DocumentException
       file:用于指定要解析的XML文件。
       例如,获取XML文件zone.xml对应的XML文档对象的代码如下:
               String fileURL =request.getRealPath("/xml/zone.xml");
               SAXReader reader = newSAXReader();                          // 实例化SAXReader对象
               Document document =reader.read(new File(fileURL));             //获取XML文件对应的XML文档对象
2.获取根节点
       在构建XML文档对象后,就可以通过该XML文档对象获取根节点。dom4j组件的Document对象的getRootElement()方法可以返回指定XML文档的根节点。getRootElement()方法的原型如下:
        public ElementgetRootElement()
        返回值:Element对象。
        例如,获取XML文档对象document的根节点的代码如下:
                Element country=document.getRootElement(); // 获取根节点
3.获取子节点
        在获取根节点后,还可以获取其子节点,这可以通过Element对象的element()或elements()方法实现。下面将分别介绍这两个方法。
         element()方法
         element()方法用于获取指定名称的第一个节点。该方法通常用于获取根节点中节点名唯一的一个子节点。element()方法的原型如下:
         public Element element(Stringname)
        参数说明:
               name:用于指定要获取的节点名。
               返回值:Element对象。
         elements()方法
         elements()方法用于获取指定名称的全部节点。该方法通常用于获取根节点中多个并列的具有相同名称的子节点。elements()方法的原型如下:
          public List elements(Stringname)
          参数说明: name:用于指定要获取的节点名。
         返回值:List集合。
         例如,要获取本范例中的XML文件zone.xml的province节点,可以应用elements()方法,具体代码如下:
         Element country =document.getRootElement();                             // 获取根节点
         ListprovinceList = country.elements("province"); // 获取表示省份和直辖市的节点
4.查询节点
        在dom4j组件中,查询节点可以应用Element对象的selectSingleNode()方法实现。Element对象的selectSingleNode()方法用于获取符合指定条件的唯一节点,该方法的原型如下:
        public NodeselectSingleNode(String xpathExpression)
       参数说明:
              xpathExpression:XPath表达式。XPath表达式使用反斜杠“/”隔开节点树中的父子节点,从而构成代表节点位置的路径。如果XPath表达式以反斜杠“/”开头,则表示使用的是绝对路径,否则表示使用的是相对路径。如果使用属性,那么必须在属性名前加上@符号。另外,在XPath表达式中,也可以使用谓词,例如下面的表达式将返回name属性值等于“北京市”的province节点。
         /country/province[@name='北京市']
        例如,应用selectSingleNode()方法获取XML文档的根节点country的name属性为“北京市”的子节点province的代码如下:
        Element item = (Element)country.selectSingleNode("/country/province[@name='北京市']");
5.获取属性值
       使用Element对象的attributeValue()方法可以获取指定节点的指定属性值,该方法的原型如下:
       public StringattributeValue(String name)
       参数说明:
             name:参数用于指定要获取其值的属性名。
             例如,要获取province节点的name属性的值,可以使用下面的语句:
                  ElementprovinceElement.attributeValue("name")
 设计过程
(1)创建一个XML文件,名称为zone.xml,用于保存省市信息。Zone.xml文件的关键代码如下:


	
		
		
	
	
		
		
		
			
		
			
		
			
		
		
		
			
		
			
		
		
		
										
			
	……			

(2)编写index.jsp文件,应用DIV+CSS进行布局,并在该文件的适当位置添加省/直辖市下拉列表、地级市下拉列表和县/县级市/区下拉列表,关键代码如下:

  -
  
  -
  
(3)创建request.js文件,用于封装Ajax请求服务器的方法。
(4)在index.jsp页面的

                    
                    

你可能感兴趣的:(Java进阶)