Servlet的工作原理及其生命周期_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Servlet的工作原理及其生命周期

Servlet的工作原理及其生命周期

 2013/10/15 18:45:53  海角七号  程序员俱乐部  我要评论(0)
  • 摘要:Web成为当今主流的互联网web应用技术之一,而Servlet是JavaWeb技术的核心基础,因而掌握Servlet的工作原理是每一个JavaWeb技术开发人员的基本要求。一、Servlet创建的两种方法:客户端请求相应的Servlet时,创建Servlet实例;通过在web.xm中配置load-on-startup创建servlet实例,语法为:在<Servlet></Servlet>之间添加<load-on-startup>1</load-on
  • 标签:工作 Servlet

? ? ? ?Web成为当今主流的互联网web应用技术之一,而Servlet是Java Web技术的核心基础,因而掌握Servlet的工作原理是每一个Java Web技术开发人员的基本要求。

? ? 一、 ?Servlet创建的两种方法:

  1. 客户端请求相应的Servlet时,创建Servlet实例;
  2. 通过在web.xm中配置load-on-startup创建servlet实例,语法为:在<Servlet></Servlet>之间添加<load-on-startup>1</load-on-startup>,这种方法在web容器启动时,就创建Servlet实例;

? ?二、Servlet运行时一般都遵循如下生命周期:

  1. 创建Servlet实例;
  2. Web 容器调用servlet的init()方法,对Servlet进行初始化;
  3. Servlet初始化后,就一直存在于容器中,用于响应客户端请求,根据客户端的请求方式,调用Servlet的service()方法,通过service方法去调用相应的doxxx方法;
  4. web容器销毁servlet时,调用Servlet的destroy方法,通常在关闭web容器时销毁servlet

? ?三、Servlet的工作原理:

? ? ? ? 首先,客户端发出一个请求,servlet调用service方法对请求进行响应,service()方法对请求方式进行匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,对客户做出响应。

? ? ? ? 在Servlet接口和GenericServlet中是没有doGet和doPost等方法的,HttpServlet中定义了这些方法,但都返回的是error信息,所以,我们每次在定义一个Servlet的时候,都要实现doGet或doPost方法,每个自定义的servlet都必须实现Servlet接口,Servlet接口中定义了5个方法,其中比较重要的三个方法涉及到servlet的生命周期,分别是上面提到的init()方法,service()方法,destroy()方法,GenericServlet是一个通用的,不特定与任何协议的Servlet,他实现了Servlet接口,而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们自己定义Servlet的时候只需要继承HttpServlet即可,Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于Http协议的类,所以HttpServlet实现了service()方法,并将请求ServletRequest和ServletResponse强制转换成HttpRequest和HttpResponse。

? ? ? Servlet响应请求阶段:对于用户到达Sevlet请求,Servlet容器会创建特定于这个请求的ServletRequest和ServletResponse对象,然后调用servlet的service方法,service方法从ServletRequest对象获取用户请求信息,处理该请求,并通过ServletResponse对象对客户做出响应

? ? ? Servlet终止阶段:当Web应用被终止或Servlet容器终止运行,或Servlet容器重新装载Servlet实例时,Servlet容器会先调用Servlet的destroy()方法,在destroy()方法中可以释放掉servlet所占用的资源。

?

对Servlet的更多了解可以参考http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

发表评论
用户名: 匿名