Servlet 生命周期

一、实现重写servlet

  创建一个类,实现 servlet 这个接口时,需要实现里面的抽象方法。

 import javax.servlet.*;
import java.io.IOException; public class ServletDemo implements Servlet {
public ServletDemo() {
System.out.println("1、构造器方法");
}
/**
* 初始化方法,在servlet被创建时,执行,只会执行一次
* @param servletConfig
* @throws ServletException
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException
System.out.println("2、初始化方法init...");
} /**
* 获取servletconfig对象
* servletConfig:servlet的配置对象
* @return
*/
@Override
public ServletConfig getServletConfig() {
return null;
} /**
* service:提供服务方法,专门用来处理请求和响应的
* 每一次servlet被访问时,执行,执行多次
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3、服务方法service...");
} /**
* 获取servlet的一些信息,如版本,作者等。。
* @return
*/
@Override
public String getServletInfo() {
return null;
} /**
* 销毁方法
* 在服务器正常关闭时,在servlet被杀死时,被执行,只执行一次
*/
@Override
public void destroy() {
System.out.println("4、销毁方法destory...");
}
}

二、生命周期

  1、被创建时期

    执行 Servlet 构造器方法,一般是在第一次访问 Servlet时,由Web容器(Tomcat)来创建 Servlet。

    Servlet什么时候被创建?

      默认情况下,Servlet 第一次被访问,Servlet 被 Web 容器创建。

    可以配置 Servlet 的创建时机

      在 web.xml 中 <servlet> 标签下配置 <load-on-startup>,默认值为 -1。

      ① 第一次访问时,创建,设置 <load-on-startup>的值为负数

      ② 在服务器启动时,创建,设置<load-on-startup>的值为0或正整数

1  <!--配置servlet-->
2 <servlet>
3 <!--servlet名称-->
4 <servlet-name>demo1</servlet-name>
5 <!--servlet全类名-->
6 <servlet-class>cn.ks.web.servlet.ServletDemo1</servlet-class>
7 <!-- 创建时机-->
8 <load-on-startup>5</load-on-startup>
9 </servlet>

  2、初始化时期

     当类被创建后,立刻执行 init() 初始化方法,只执行一次。

    Servlet的 init() 方法,只执行一次(一般用来加载资源),说明一个Servlet在内存中只存在一个对象,Servlet是单例的

     a、多个用户同时访问时,可能存在线程安全问题。

     b、解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

  3、服务时期

    该时期执行 service() 方法来提供服务,这个方法可以执行多次。每次访问 servlet 时,Service 方法都会被调用一次。

  4、销毁时期

    被销毁时,执行 destory() 方法,只执行一次

      ① Servlet被销毁时执行。服务器关闭时,Servlet被销毁

      ② 只有服务器正常关闭时,才会执行destroy方法。

      ③ destroy方法在Servlet被销毁之前执行,一般用于释放资源  

  

Java 之 Servlet中的生命周期的更多相关文章

  1. java Web servlet简介及其生命周期

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容. 我们可 ...

  2. Java Web学习总结(9)——servlet和Jsp生命周期解读

    一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...

  3. Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)

    该篇文章记录了Servlet配置相关用法及Servlet在Servlet容器中生命周期方法. Tomcat是一个Servlet容器: 1.Servlet容器管理了Servlet的整个生命周期,并调用s ...

  4. Java对象在JVM中的生命周期

          当你通过new语句创建一个java对象时,JVM就会为这个对象分配一块内存空间,只要这个对象被引用变量引用了,那么这个对象就会一直驻留在内存中,否则,它就会结束生命周期,JVM会在合适的时 ...

  5. 面试之jsp、Servlet相关知识——生命周期, 区别等

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

  6. servlet简介及生命周期

    Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...

  7. servlet反射、生命周期、接口

    什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l  ...

  8. Servlet配置及生命周期

    1.设置Ecilipse快捷  file new 2.创建Servlet程序 1). 创建一个 Servlet 接口的实现类.              public class HelloServl ...

  9. 第24章 java线程(3)-线程的生命周期

    java线程(3)-线程的生命周期 1.两种生命周期流转图 ** 生命周期:**一个事物冲从出生的那一刻开始到最终死亡中间的过程 在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态 ...

随机推荐

  1. 第06组 Alpha冲刺(2/4)

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11885037.html 作业博客 :https://edu.cnblogs.com/campus/f ...

  2. 第09组 Beta冲刺(1/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  3. IntelliJ IDEA Check out from git

    点击check out from vesion control 填写git地址,test,clone

  4. 无法反序列化的java.util.ArrayList实例出来VALUE_STRING的(Can not deserialize instance of java.util.ArrayList out of VALUE_STRING)

    解决方法: 设置DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY.问题解决.

  5. 视频色彩空间RGB、YUV、YCbCr

    RGB.YUV和YCbCr都是人为规定的彩色模型或颜色空间(有时也叫彩色系统或彩色空间).它的用途是在某些标准下用通常可接受的方式对彩色加以描述.本质上,彩色模型是坐标系统和子空间的阐述. RGB R ...

  6. RequestUtil 获取网址页面信息

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  7. SpringBoot 使用AOP记录接口访问日志

    文章来源:https://macrozheng.github.io/mall-learning/#/technology/aop_log AOP AOP为Aspect Oriented Program ...

  8. Nginx - 代理后端通过域名访问

    目录- 前言- Nginx 根据域名反向代理- Nginx proxy_pass 关于 '/' 的作用 1. 前言 接到一个需求,通过nginx 代理互联网上某一个页面,刚开始的时候觉得很简单的,直接 ...

  9. [LeetCode] 803. Bricks Falling When Hit 打击砖块掉落

    We have a grid of 1s and 0s; the 1s in a cell represent bricks.  A brick will not drop if and only i ...

  10. 在CentOS 7中 使用 Nginx 反代 .Net Core

    很久没弄 .Net Core 了,然后忽然发现Windows自带的 Hyper-V 虚拟机貌似挺好用的 .Net Core 之前都是用 Jexus 来做服务器,忽然想用下Nginx来试试 1.在 Ce ...