XML解析

    public static void reflect(){
        // 获取解析器
        SAXReader reader = new SAXReader();
        try {
            // 获取document
            Document document = reader.read("src/main/resources/WebDtd.xml");
            // 获取根元素
            Element root = document.getRootElement();
            // 查找servlet元素
            Element em = root.element("servlet");
            // 查找servlet元素下的servlet-class元素
            String servletClass = em.elementText("servlet-class");
            // 返回与给定字符串名称的类或接口相关联的类对象
            Class clz = Class.forName(servletClass);
            // 创建类的实例
            Object obj = clz.newInstance();
            // 获取指定类的方法 注意:getMethod()中的参数必须指明,否则如果存在重载情况会报错,其次,参数类型int和Integer是不一样的
            Method f1 = clz.getMethod("f1",String.class, int.class,int.class);
            Method f2 = clz.getMethod("f2");
            Method f3 = clz.getMethod("f3");
            // 执行指定类的方法
            Object f1Result = f1.invoke(obj,"lemon",1,10);
            Object f2Result = f2.invoke(obj);
            Object f3Result = f3.invoke(obj);
            System.out.println("f1Result:" + f1Result);
            System.out.println("f2Result:" + f2Result);
            System.out.println("f3Result:" + f3Result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 WebDtd.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>MyServer</servlet-name>
        <servlet-class>com.home.framework.test.PersonSImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServer</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

PersonS接口

public interface PersonS {

    String f1(String param1,int page,int limit);

    String f2();

    String f3();
}

PersonS接口实现类

public class PersonSImpl implements PersonS {

    @Override
    public String f1(String param1,int page,int limit) {
        System.out.println("f1方法执行了-->[param1:" + param1 + ",page:" + page + ",limit:" + limit + "]");
        return "出生";
    }

    @Override
    public String f2() {
        System.out.println("f2方法执行了");
        return "青年";
    }

    @Override
    public String f3() {
        System.out.println("f3方法执行了");
        return "爱你到老";
    }
}

转自: https://www.cnblogs.com/wangrongchen/p/9251503.html

原文地址:https://www.cnblogs.com/PersonalDiary/p/13600033.html