Java 之 Servlet中的生命周期
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中的生命周期的更多相关文章
- java Web servlet简介及其生命周期
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容. 我们可 ...
- Java Web学习总结(9)——servlet和Jsp生命周期解读
一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...
- Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)
该篇文章记录了Servlet配置相关用法及Servlet在Servlet容器中生命周期方法. Tomcat是一个Servlet容器: 1.Servlet容器管理了Servlet的整个生命周期,并调用s ...
- Java对象在JVM中的生命周期
当你通过new语句创建一个java对象时,JVM就会为这个对象分配一块内存空间,只要这个对象被引用变量引用了,那么这个对象就会一直驻留在内存中,否则,它就会结束生命周期,JVM会在合适的时 ...
- 面试之jsp、Servlet相关知识——生命周期, 区别等
1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...
- servlet简介及生命周期
Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...
- servlet反射、生命周期、接口
什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l ...
- Servlet配置及生命周期
1.设置Ecilipse快捷 file new 2.创建Servlet程序 1). 创建一个 Servlet 接口的实现类. public class HelloServl ...
- 第24章 java线程(3)-线程的生命周期
java线程(3)-线程的生命周期 1.两种生命周期流转图 ** 生命周期:**一个事物冲从出生的那一刻开始到最终死亡中间的过程 在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态 ...
随机推荐
- patch的用法【转】
什么是patch patch即补丁之意,记录文件中的不同,能够与文件进行整合,从而改变文件中的内容 如何制作patch 在Linux系统中提供了diff程序,可以使用diff程序,比较文件之间的不同从 ...
- 性能测试分析过程(三)linux下查看最消耗CPU/内存的进程
linux下查看最消耗CPU 内存的进程 1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10 ...
- Java基础 throws 提示调用方法时要注意处理相关异常
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- 源码包的三个参数make-configure-make install解释
1.configure 这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码: ./configure --prefix= ...
- '>/dev/null 2>&1' 是什么意思?
'>' 用于重定向 '/dev/null' 是一个黑洞,任何发送的数据都将被丢弃 '2' 是标准错误的文件描述符 '>' 用于重定向 '&' 是文件描述符的符号(没有它,以下1将被 ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- SAP 更新模块1
RSM13000 / RSM13000 / 5.747FORM / VB_CALL_FUNC CALL 'ThVBCall' ID 'OPCODE' FIELD vb_update_modul_pro ...
- shell语法学习
[原文] 菜鸟笔记shell教程学习. 本篇博客只是记录shell的一些关键语法,主要是做一个记录,有些内容也是copy过来的,并不是一个完整的教程,想完整学习shell的同学可以前往 shell脚本 ...
- QT/C++ 类型转换
"轻轻地我走了,正如我轻轻地来,我挥一挥衣袖,不带走一片云彩"------阿魔 1) int转为QString: QString::number(int) 2) std::stri ...
- Windows下mysql安装配置问题
下载最新版的mysql: https://dev.mysql.com/downloads/mysql/ 下载完成后解压打开安装包如下 打开cmd以管理员身份运行(一定要以管理员身份运行) 然后输入命令 ...