Servlet容器:运行Servlet、JSP、Filter等的软件环境
-1)可以来创建Servlet,并调用Sevrlet的生命周期
-2)JSP、Filter、Listener、Tag …
Servlet生命周期的方法
-1)构造器:只有第一次请求Servlet时,创建Servlet的实例,调用构造器。这说明Servlet是单实例的
-2)init方法:只被调用一次,在创建好实例后立即被调用。用于初始化当前Servlet。
-3)service:被调用多次,每次请求都会调用service方法,实际用于响应请求的
-4)destroy:只被调用一次,在当前Servlet所在的WEB应用卸载前调用。用于释放当前Servlet所占用的资源。
load-on-startup参数
-1)配置在servlet节点中:
<servlet>
<!-- Servlet 注册名字 -->
<servlet-name>helloServlet</servlet-name>
<!-- Servlet 的全类名 -->
<servlet-class>com.atguigu.test.HelloServlet</servlet-class>
<!-- 可以指定Servlet被创建的时机 -->
<load-on-startup>1</load-on-startup>
</servlet>
-2)load-on-startup:可以指定servlet被创建的时机,若为负数,则在第一次请求时被创建,若为0或正数,则在当前WEB应用被Servlet容器加载时创建实例,且数组越小越早被创建
Servlet容器响应客户请求的过程
-1)Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第四步,否则,执行第二步
-2)装载并创建该Servlet的一个实例对象:调用该Servlet的构造器
-3)调用Servlet实例对象的init()方法
-4)创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletRespond对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
-5)WEB应用程序被停止或重启之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法
关于Servlet-mapping
-1)同一个Servlet可以被映射到多个URL上,即多个元素的子元素的设置值可以是同一个Servlet注册名。
-2)在Servlet映射到的URL中也可以使用“星”通配符,但是只能有两种形式:*.扩展名或者 /星
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
或
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>*.扩展名</url-pattern>
</servlet-mapping>