Servlet程序开发-- Servlet生命周期
2015-11-16 16:35
417 查看
生命周期是一个程序的存在周期,受容器管理,所以容器决定生命周期。
生命周期包括 加载,初始化,服务,销毁,卸载 5个部分
加载:第一次使用的时候加载
初始化:init方法, 失败的话,直接卸载,如果成功的话,进行服务的操作,如果服务不再使用,进行销毁再卸载
服务:service方法
销毁:destroy方法
代码:
web.xml配置:
init:在第一次运行的时候才会初始化
销毁destroy:
1. 容器关闭
2. 一个servlet长时间不使用
3. 还有一种开发中的可能性,执行了reload操作
如果调用service方法的话,主要功能是区分是get请求还是post请求,如果是get请求,则调用doGet方法,如post请求,则调用doPost请求,但是一旦在子类中被覆写之后,则没有了区分此种的能力,所以doGet和doPost都失效了。
实际上,这种方法更像是一种设计的模板操作,只需要按照要求将方法覆写完成了,那么就可以实现响应的功能。
当然还有一点需要注意,在正常情况下,初始化是在servlet第一次使用的时候调用,如果需要在容器启动的时候,servlet可以直接进行初始化操作的话,可以设置web.xml文件,增加一个相应的配置参数,表示在容器启动的时候加载参数:
总结:
1. 最重要的就是service方法,doGet,doPost是专门负责处理请求的。
2. 通过配置web.xml文件可以在服务器启动时自动初始化servlet
生命周期包括 加载,初始化,服务,销毁,卸载 5个部分
加载:第一次使用的时候加载
初始化:init方法, 失败的话,直接卸载,如果成功的话,进行服务的操作,如果服务不再使用,进行销毁再卸载
服务:service方法
销毁:destroy方法
代码:
package org.lxh.servletdemo ; import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class LifeCycleServlet extends HttpServlet{ public void init() throws ServletException{ System.out.println("** 1、Servlet初始化 --> init()") ; } public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ System.out.println("** 2、Servlet服务 --> doGet()、doPost()") ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ this.doGet(req,resp) ; } public void destroy(){ System.out.println("** 3、Servlet销毁 --> destory()") ; try{ Thread.sleep(3000) ; }catch(Exception e){} }/* public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{ System.out.println("************ 服务 **************") ; } */ }
web.xml配置:
<servlet> <servlet-name>life</servlet-name> <servlet-class>org.lxh.servletdemo.LifeCycleServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>life</servlet-name> <url-pattern>/LifeServlet</url-pattern> </servlet-mapping>
init:在第一次运行的时候才会初始化
销毁destroy:
1. 容器关闭
2. 一个servlet长时间不使用
3. 还有一种开发中的可能性,执行了reload操作
如果调用service方法的话,主要功能是区分是get请求还是post请求,如果是get请求,则调用doGet方法,如post请求,则调用doPost请求,但是一旦在子类中被覆写之后,则没有了区分此种的能力,所以doGet和doPost都失效了。
实际上,这种方法更像是一种设计的模板操作,只需要按照要求将方法覆写完成了,那么就可以实现响应的功能。
当然还有一点需要注意,在正常情况下,初始化是在servlet第一次使用的时候调用,如果需要在容器启动的时候,servlet可以直接进行初始化操作的话,可以设置web.xml文件,增加一个相应的配置参数,表示在容器启动的时候加载参数:
<load-on-startup>1</load-on-startup>
总结:
1. 最重要的就是service方法,doGet,doPost是专门负责处理请求的。
2. 通过配置web.xml文件可以在服务器启动时自动初始化servlet
相关文章推荐
- iOS/OS X内存管理(一):基本概念与原理 【转载】
- 第11周项目1-验证算法(2)二叉树构造算法的验证
- 第十二周 项目1——图基本运算
- 2015彭博全球金融影响力排行:我们的习大大排第二!
- 通知公告阅读日志构建说明
- 第12周-项目二-操作用邻接表存储的图
- java 内存分配
- Excel打印设置分页首行重复显示
- Hibernate 映射关系 ---One2One 主键关联
- php apache
- Android自定义软键盘的实现
- 第十二周-图及其存储结构(邻接矩阵·邻接表)算法库
- 第12周 项目2-操作用邻接表存储的图
- memcache
- LAMP安全设置
- 2015-11-16 【项目1 - 图基本算法库】
- 数据结构—树——20150604
- Spark的WorkCount的例子
- php 迷宫
- Android 之http编程