有一个兽人类
package com.swift.servlet;public class OrcDemo {private int hp;private int mp;private int atk;public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp;}public int getMp() {return mp;}public void setMp(int mp) {this.mp = mp;}public int getAtk() {return atk;}public void setAtk(int atk) {this.atk = atk;}public OrcDemo() {}public OrcDemo(int hp, int mp, int atk) {super();this.hp = hp;this.mp = mp;this.atk = atk;}public void orcInfo() {System.out.println("hp"+hp+"mp"+mp+"atk"+atk);}public static void main(String[] args) {OrcDemo orc=new OrcDemo(3000,2000,500);orc.orcInfo();}}
原本的兽人对象使用方法: public static void main(String[] args) {OrcDemo orc=new OrcDemo(3000,2000,500);orc.orcInfo();} 使用Class类反射,得到兽人对象全部内容:
Class c=Class.forName("OrcDemo");
OrcDemo od=(OrcDemo)c.newInstance(); od.orcInfo();apache.tomcat就是使用这种方法调用的Servlet
web.xml配置文件中ServletDemo com.swift.servlet.TestServlet ServletDemo /test
把上面的com.swift.servlet.TestServlet 中的com.swift.servlet.TestServlet拿出来使用即可
应用到刚才写的反射代码 Class c=Class.forName("OrcDemo"); OrcDemo od=(OrcDemo)c.newInstance(); od.orcInfo(); 变为
Class c=Class.forName("com.swift.servlet.TestServlet");//ServletDemo sd=(ServletDemo)c.newInstance();/*tomcat就是因为不知道有 ServletDemo这个类,才使用反射方法,这里我们可以用他的父类,多态就可以了*/HttpServlet hs=c.newInstance();hs.doGet();