编写服务器软件
核心思维:通过dom4j或xpath解析XML文件,使用方法获取标签体,根据全限定名找到指定类。使用反射执行需要执行的方法。
代码练习:
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5">
<servlet>
<servlet-name>HelloMyServlet</servlet-name>
<servlet-class>cn.feizhu.HelloMyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloMyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Demo类
package cn.feizhu;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;
public class Demo2 {
@Test
public void f1() throws Exception{
//解析XML
//创建document对象
Document doc=new SAXReader().read("D:\\javapro\\xml&tomat\\XML\\web.xml");
//通过xpath解析获取servlet-class与url-pattern 的标签体
Element servletClass= (Element) doc.selectSingleNode("//servlet-class");
Element urlPattern= (Element) doc.selectSingleNode("//url-pattern");
//获取标签体
String classText=servletClass.getText();
String urlText= urlPattern.getText();
//定义一个map
Map<String,String> map=new HashMap<>();
//向map中放入一个值 key://hello value:com.feizhu.HelloMyServlet
map.put(urlText,classText);
//通过key 获取value
String value=map.get(urlText);
//通过全限定名 创建一个实例子
Class clazz=Class.forName(value);
HelloMyServlet a=(HelloMyServlet) clazz.newInstance();
//调用空参的add方法
Method method=clazz.getMethod("add");
method.invoke(a);
}
}
结果截图:
备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意) QQ1156107728(添加注明来意)