通过读取配置文件的方式来使用反射完成对实例对象方法的调用
实现的功能如题,通过读取配置文件的方式来使用反射完成对实例对象方法的调用。
废话不多说,直接演示,先准备一个接口:
public interface IMyServlet {
public void init();
public void service();
public void destory();
}
然后再创建一个实现类,实现上面的接口:
public class MyServlet implements IMyServlet{
@Override
public void init() {
System.out.println("MyServlet诞生了……");
}
@Override
public void service() {
System.out.println("MyServlet开始服务了……");
}
@Override
public void destory() {
System.out.println("MyServlet销毁了……");
}
}
添加一下xml解析的jar包,这个网上可以随便下载得到:
添加一个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>MyServlet</servlet-name>
<servlet-class>com.itman.xmldemo.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
一切准备完毕,然后测试使用一下:
//通过读取配置文件的方式来使用反射完成对实例对象方法的调用
public class TestMyServlet {
@Test
public void testMyServlet() {
try {
// 1.创建解析器对象
SAXReader saxReader = new SAXReader();
// 2.使用解析器加载web.xml文件得到document对象
Document document = saxReader.read("src/com/itman/xmldemo/web.xml");
// 3.获取根元素节点
Element rootElement = document.getRootElement();
// 4.根据元素名称获取子元素节点
Element servletElement = rootElement.element("servlet");
// 5.根据元素名称获取servlet-class的文本节点
String servletClass = servletElement.element("servlet-class")
.getText();
// System.out.println(servletClass);
// 6.通过类全名获取字节码文件
Class clazz = Class.forName(servletClass);
// 7.创建实例对象
MyServlet my = (MyServlet) clazz.newInstance();
// 8.调用实例对象里面的方法
my.init();
my.service();
my.destory();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果,没毛病:
---------------------
作者:LayneYao
来源:CSDN
原文:https://blog.csdn.net/Jsagacity/article/details/80118476
版权声明:本文为博主原创文章,转载请附上博文链接!