为了灵活实现的不同路径(/hello)执行不同的资源(HelloMyServlet)我们需要使用XML进行配置:为了限定XML内容,我们需要使用xml约束(DTD或schema);为了获得xml的内容,我们需要使用dom4j进行解析。
TestDom4j.java:
package cn.itheima.xml.dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class TestDom4j {
@Test
public void testReadWebXML() {
try {
//1.获取解析器
SAXReader saxReader = new SAXReader();
//2.获取document文档对象
Document doc = saxReader.read("src/cn/itheima/xml/schema/web.xml");
//3.获取根元素
Element rootElement = doc.getRootElement();
//System.out.println(rootElement.getName());
System.out.println(rootElement.attributeValue("version"));
//4.获取根元素下的子元素
List<Element> childElements = rootElement.elements();
//5.遍历子元素
for (Element element : childElements) {
//6.判断元素名称为servlet的元素
if("servlet".equals(element.getName())) {
//7.获取servlet-name元素
Element servletName = element.element("servlet-name");
//8.获取servlet-class元素
Element servletClass = element.element("servlet-class");
System.out.println(servletName.getText());
System.out.println(servletClass.getText());
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
System.out.println(1);
e.printStackTrace();
}
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://www.example.org/web-app_2_5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>xxxxx</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>