在这里先讲讲一个Servlet怎么配置的。它的主要目的就是让一个url映射到具体的Servlet类了。看看上面就知道了,它一般有两个,一个是指定一个name,和类的全名,一个是为这个name的Servlet配置url的映射,也就是如果是这个url的话,那么就是这个name的Servlet,然后通过这个name的Servlet去找到它的具体类。这样通过name的中介,来把一个url映射到一个具体的Servlet类了。
这样你要为你项目中的所以Servlet都在web.xml文件中配置好它的url映射。这样Context容器把这个文件加载进容器中,就可以为请求包中的url找到相应的Servlet类了。
这样你要为你项目中的所以Servlet都在web.xml文件中配置好它的url映射。这样Context容器把这个文件加载进容器中,就可以为请求包中的url找到相应的Servlet类了。
到上面为止,两个web.xml文件就差不多讲完了。
接下来就是具体的对Servlet管理了,是啊,刚才只是找到了请求相应的类丫,那到底怎么办呢?那么多的客户端的请求,是每个请求都实例化它对于的Servlet类呢?还是怎么做呢?
先说怎么做的吧,一般是首先会把web.xml文件中配置的所有的Servlet类都加载到容器中,对于加载类这个概念通过前面对java的介绍应该已经知道了吧,主要是在内存的方法区中存一个类的类型数据,在堆里面存一个相应的Class实例。然后,当某个Servlet第一次被请求的时候,容器就会实例化相应的Servlet类,实例化类,有这个概念么?基本上就是在堆里面存放实例数据(就是类变量,类变量对应的概念是局部变量了,在栈里面的),和保持住和类的类型数据的引用。然后就是run这个Servlet了。run完后,并不清除掉堆上的对象。之后再有请求这个Servlet,就直接把这个对象再调用。这就是基本上Context容器对Servlet的生命周期管理了。