通过web.xml配置文件,使用DOM4J解析XML

匿名 (未验证) 提交于 2019-12-02 23:41:02

web.xml配置文件

         * DOM4J解析XML

         * 拿到cn.itcast.servlet.HelloServlet

         * 就可以通过反射Class对象可以获得类中的属性和方法。

 

                            <web-app>

                                   <servlet>

                                          <servlet-name>HelloServlet</servlet-name>

                                          <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>

                                   </servlet>

                            </web-app>

  过程:   

     * 容器(服务器)启动。加载配置文件,读取配置文件,然后进行解析。拿到配置文件内容。通过反射创建实例,拿到类中方法。

                  * 加载.class文件。不能使用xxx.java文件。

代码

<?xml version="1.0" encoding="UTF-8"?> <web-app>     <servlet>         <servlet-name>HelloServlet</servlet-name>         <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>     </servlet> </web-app>
package cn.itcast.servlet;  public class HelloServlet {          public void run(){         System.out.println("正在跑...");     }  }
import java.io.FileOutputStream; import java.lang.reflect.Method; import java.util.List;  import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;  import cn.itcast.reflect.Person;  /**  * DOM4J的解析XML  * @author Administrator  *  */ public class Dom4jTest {          public static void main(String[] args) {         try {             run1();         } catch (Exception e) {             e.printStackTrace();         }     }            /**      * 对XPATH的支持      * @throws Exception      */     public static void run1() throws Exception{         // 获取解析器对象         SAXReader reader = new SAXReader();         // 解析XML         Document document = reader.read("src/myweb.xml");                                                      List<Node> list = document.selectNodes("//servlet-class");         Node packet = list.get(0);         System.out.println(packet.getText());                  Class clazz = Class.forName(packet.getText());         HelloServlet p = (HelloServlet) clazz.newInstance();         Method m = clazz.getDeclaredMethod("run");         m.invoke(p);     }  }

结果

cn.itcast.servlet.HelloServlet 正在跑...

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!