Servlet基础_Servlet配置以及Servlet生命周期
1.servlet方法和一般的java方法不同之处
(1).现象
我们看见一个显现,启动tomcat服务器的时候,我们所调用的这一个Servlet方法已经被执行了,并打出了要输出的部分信息。我们之前是
自己启动,自己创建实例,自己调用方法,字节结束方法,但是servlet就自己调用了方法,其实这是服务器执行的,因为Servlet是运行在
服务器端的应用程序,Servlet容器会帮我们创建Servlet实例,调用Servlet方法,在结束的时候会调用销毁方法。
(2).Servlet容器做的操作
A:创建Servlet实例,并调用Servlet的相关生命周期方法。(即先init()-->Service()--->destory())
B:如jsp,Filter,listener,Tag等运行在Servlet容器中的都受到Servlet容器管理。
2.Servlet相关的生命周期方法
(1).构造器:第一次请求servlet的时候,只会被调用一次,创建Servlet的实例,调用构造器。同时也说明Servlet是单实例的。(这一个时候就
存在线程安全的问题也就是说不提倡使用全局变量在Servlet里面)。
(2).init():只会被调用一次,也即是创建好实例以后会被调用,用于初始化当前的Servlet,注意:是可传递参数的初始化,一般就是配置信息。
(3).Service():会被多次调用,这个就是用于响应请求的。
(4).destory():只会被调用一次,在当前的servlet所在的web被卸载调用之前会被调用,用于释放servlet占用的资源。
注意:以上的方法都是被servlet容器所调用。
3.特殊的参数:load-on-startup
(1).作用:指定该servlet在容器中被创建的时机。配置在servlet的节点中。参数如果为负数,那么会被第一次请求的时候被创建实例,
如果不为负数,那么会被servlet容器加载的时候创建实例,且数据值越小越早被创建。
(2).实例:
4.servlet容器响应servlet请求的过程
(1).Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行(4),否则执行(2)
(2).装载并创建该Servlet的一个实例对象:调用该Servlet的构造器。
(3).调用Servlet实例对象的init()方法。
(4).创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用
Servlet的service()方法并将请求和响应对象作为参数传递进去。
(5).WEB应用程序被停止请求和重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的
destory()方法。
5.Servlet的注册以及Servlet的运行
(1).Servlet程序必须通过Servlet容器来启动运行,并且存储目录需要有特殊要求,通常
需要存储在<WEB应用程序目录>\WEB-INF\classes\目录中。
(2).Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎记载和被外界访问。
(3).servlet的注册和映射
A:注册
一个Servlet元素用于注册一个Servlet,它包含俩个主要的子元素:
和Servlet的完整类名。
B:映射
一个
分别用于指定Servlet的注册名称和Servlet的对外访问路径。