java 通过读取配置文件的方式来使用反射完成对实例对象方法调用

web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "../lib/web-app_2_3.dtd" >
<web-app version="2.3">
	<servlet>
		<servlet-name>MyServlet1</servlet-name>
		<servlet-class>com.dxm.servlet.MyServlet1</servlet-class>
	</servlet>

	<servlet>
		<servlet-name>MyServlet2</servlet-name>
		<servlet-class>com.dxm.servlet.MyServlet2</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>MyServlet1</servlet-name>
		<url-pattern>/servlet1</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>MyServlet2</servlet-name>
		<url-pattern>/servlet2</url-pattern>
	</servlet-mapping>

</web-app>
package com.dxm.servlet;

public interface IMyServlet {
	public void init();
	public void service();
	public void destroy();
}
package com.dxm.servlet;

public class MyServlet1 implements IMyServlet{

	@Override
	public void init() {
		System.out.println("MyServlet1 init");
	}

	@Override
	public void service() {
		System.out.println("MyServlet1 service");
	}

	@Override
	public void destroy() {
		System.out.println("MyServlet1 destroy");
	}
	
}
package com.dxm.servlet;

public class MyServlet2 implements IMyServlet{
	@Override
	public void init() {
		System.out.println("MyServlet2 init");
	}

	@Override
	public void service() {
		System.out.println("MyServlet2 service");
	}

	@Override
	public void destroy() {
		System.out.println("MyServlet2 destroy");
	}
}
package com.dxm.servlet;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestMyServlet {
	@Test
	public void test() throws Exception {
		SAXReader reader = new SAXReader();
		Document doc = reader.read("src/web.xml");
		Element rootElement = doc.getRootElement();
		List<Element> elements = rootElement.elements("servlet");
		for (Element ele : elements) {
			String servletName = ele.element("servlet-name").getText();
			String servletClass = ele.element("servlet-class").getText();
			System.out.println(servletName);
			System.out.println(servletClass);

			Class clazz = Class.forName(servletClass);

			IMyServlet myServlet = (IMyServlet) clazz.newInstance();
			myServlet.init();
			myServlet.service();
			myServlet.destroy();
		}

	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值