在HttpServlet的子类中,必须要有空参数的构造方法,即默认的构造方法。
class AServlet extends HttpServlet{
AServlet(){}
}
因为当有请求过来时,会根据请求的URL地址,找到相应的url-pattern,然后根据web.xml文件中的映射对应关系,找到处理请求的相应的Servlet,即根据<servlet-class>得知相应的servlet类,那么怎么获取Servlet对象呢?此时会通过反射技术,即Class c=class.forName(路径)得到相应的Class,然后通过c.newInstance()获得实例对象。那么怎么调用实例对象的service方法呢?可以通过Method method=c.getMethod("service",ServletRequest.class,ServletResponse.class),然后可以通过method.invoke()完成对该方法的调用。以上过程都是Tomcat帮助我们做的,不用我们来实现。我们知道其中的处理过程及原理即可。