servlet的生命周期:
1、容器启动,会读取conf/server.xml文件,以确定启动端口和WEB应用存放的路径
2、WEB容器启动会读取每个WEB应用的web.xml文件配置信息,并解析web.xml文件。得到servlet配置信息。
-
容器加载并实例化Servlet
(web.xml文件配置servlet时有个<load-on-startup>如果大于等于0则启动容器就实例化,如果为负数或缺省则第一次请求实例化)
-
容器调用init()方法初始化
-
每次请求调用service()方法完成逻辑
-
容器丢弃servlet调用destroy()方法
其中1、2、3、4、6只执行一行,只有5是每次请求都会执行。而且在整个生命周期中,servlet 对象只有一个,单实例多线程。
session的生命周期:
在一个会话范围内。产生Session对象时,该对象就和客户端浏览器进行绑定,只要不关闭浏览器,在超时时间内该session都会有效。关闭浏览器,重开一个浏览器,则服务器会分配置新的Session对象。
由于Session是放置在服务器端的对象。所以当客户端关闭浏览器,并不意味着Session对象的销毁。所以到一定时间,一定要对Session对象进行销毁,以释放服务器内存资源。
Jsp的生命周期:
1、Web容器第一次接收到对某个JSP页面的请求后,首先自动将该JSP页面翻译为java代码 。
2、Web容器负责将Servlet代码编译为字节码。与源文件放在同一个目录下,在JSP生命周期中,整个翻译和编译步骤只发生一次
3、Web容器装载新生成的servlet类
4、第一次请求到达时,Web容器创建servlet实例对象。整个生命中,只有一个对象
5、Web容器调用Servlet示例的jspInit()方法,JSP页面装载资源
6、每次请求到达都执行_jspService()方法,输出内容
7、容器调用生成的servlet对象的jspDestroy()方法,销毁装载的资源