1.写一个模拟的servlet接口,其中有三个方法init,service,destroy
写一个实现类重写这三个方法,然后写一个web.xml配置此实现类,写一个测试类,通过反射,给我调用实现类的三个方法
package demo04; import java.lang.reflect.Method; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class demo{ public static void main(String[] args) throws Exception { // 1.获取解析器 SAXReader sax = new SAXReader(); // 2.获取文档对象 Document doc = sax.read("src/demo04/web.xml"); // 3.获取根元素 Element root = doc.getRootElement(); // 4.获取<servlet>元素 Element servlet = root.element("servlet"); // 5.servlet-class文本值 String servletclass = servlet.elementText("servlet-class"); System.out.println(servletclass); Class c =Class.forName(servletclass); Object obj =c.newInstance(); Method init =c.getMethod("init"); Method service =c.getMethod("service"); Method destroy =c.getMethod("destroy"); init.invoke(obj); service.invoke(obj); destroy.invoke(obj); } }
package demo04; //接口文件 public interface MyServlet { public void init(); public void service(); public void destroy(); }
package demo04; //实现接口,并重写方法 public class MyServletimp implements MyServlet{ public void init() { System.out.println("初始化"); } public void service() { System.out.println("运行"); } public void destroy() { System.out.println("销毁"); } }
<?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>
// xml文件,web.xml配置此实现类,通过servlet-class找到类路径 <servlet-name>MySerclet</servlet-name> <servlet-class>demo04.MyServletimp</servlet-class> </servlet> <servlet-mapping> <servlet-name>MySerclet</servlet-name> <url-pattern>/MySerclet</url-pattern> </servlet-mapping> </web-app>