编写服务器软件

本文介绍如何通过DOM4J和XPath解析XML文件来配置服务器,详细展示了如何获取XML中的类名和URL映射,并利用反射创建实例并执行方法。提供了一个Java Demo代码示例,用于演示具体的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写服务器软件

     核心思维:通过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(添加注明来意)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值