servlet生命周期

为简洁,本例使用注解方式来测试,代码部分很简单,只需要新建一个serlet,继承自HttpServlet,重写init,doGet,doPost,destory方法即可,使用注解@WebServlet注解分别测试存在loadOnStartup 和不存在loadOnStartup情况

package com.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet(value = "/my", loadOnStartup = 0)
public class MyServlet extends HttpServlet { public MyServlet() {
System.out.println("create");
} @Override
public void init() throws ServletException {
System.out.println("init");
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service");
} @Override
public void destroy() {
System.out.println("destory");
} }

一、当配置有loadOnStartup且值大于等于0时,web服务器启动即会创建和初始化该servlet,且loadOnStartup数值越小,越优先执行,后续每次访问该servlet,将会调用一次service服务(doGet/doPost),关闭web服务,调用destory方法,销毁servlet

二、当未配置loadOnStartup时,web服务器启动时不会初始化该servlet,当第一次访问该servlet时,才会进行创建并初始化,后续每次访问该servlet,都将会调用一次service服务(doGet/doPost),关闭web服务,调用destory方法,销毁servlet。

三、servlet中init和destory方法每次都执行一次,servlet为单实例,但并没有使用单例模式

获取初始化参数

在注解@WebServlet中可添加初始化参数initParams

@WebServlet(value = "/my", loadOnStartup = 0, initParams = {
@WebInitParam(name = "name", value = "val", description = "desc"),
@WebInitParam(name = "init", value = "initValue") })
public class MyServlet extends HttpServlet {
......
}

servlet提供了一些方法来处理初始化参数,这些方法被定义到接口ServletConfig中,

可通过getInitParameter(String)获取具体某个参数的值,也可以通过遍历来获取所有初始化参数的值

@Override
public void init() throws ServletException {
System.out.println("init");
Enumeration<String> initParameterNames = this.getInitParameterNames(); while (initParameterNames.hasMoreElements()) {
String nextElement = initParameterNames.nextElement();
System.out.println(this.getInitParameter(nextElement));
} }

回顾servlet生命周期(代码测试),读取初始化参数的更多相关文章

  1. javaWeb中servlet开发(3)——Servlet生命周期

    生命周期:是一个程序的存在周期,servlet由于是受容器的管理,所以容器来决定其生命周期 1.servlet生命周期 2.servlet生命周期对应的方法 3.servlet生命周期代码 publi ...

  2. 测试Servlet生命周期学习笔记

    测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

  3. JavaWeb知识回顾-servlet生命周期。

    Servlet生命周期 生命周期,很容易理解,拿人来说,就是你从出生到离开的这一过程.无论是什么技术,只要谈到生命周期都可以这样理解. Servlet的生命周期就是从它被创建到毁灭的过程,整个过程可以 ...

  4. 测试Servlet生命周期例子程序

    写一个类TestLifeCycleServlet,生成构造器TestLifeCycleServlet();重写HttpServlet的doGet();重写GenericServlet的destroy( ...

  5. Servlet 生命周期、工作原理

    按照单例的编码规则,Servlet本身只是一个Java,结构并不是单例结构. 只是Web容器在维护这些Servlet的时候只给创建一个实例存在JVM中,用户请求服务时,服务器只调用它已经实例化好的Se ...

  6. Web---演示servlet技术(servlet生命周期),解决中文乱码问题

    本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...

  7. Servlet底层原理、Servlet实现方式、Servlet生命周期

    Servlet简介 Servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序. Servlet的特点 (1)Servlet对像,由Servlet容器 ...

  8. JaveWeb学习之Servlet(一):Servlet生命周期和加载机制

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-22/19.html 作者:夜月归途 出处:http://www.guitu ...

  9. 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期

    一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...

随机推荐

  1. Linux 虚拟内存

    查看进程占用内存情况: ps -aux VSZ表示占用虚拟内存单位KBRSS表示占用物理内存单位KB 添加swap文件大小为4G 内部存储块每块1M dd if=/dev/zero of=/swap ...

  2. leetcode — unique-binary-search-trees

    /** * Source : https://oj.leetcode.com/problems/unique-binary-search-trees/ * * * Given n, how many ...

  3. vm12 安装ubuntu15.10详细图文教程 虚拟机安装ubuntu安装 ubuntu更新软件 ubuntu一直卡在下载语言怎么办?

    1,准备工作-ubuntu下载 ubuntu官网下载 如何官网下载ubuntu http://www.ubuntu.com/download/ 2,打开虚拟机 虚拟机安装ubuntu15.10 虚拟机 ...

  4. C# 如何在Excel表格中插入、编辑和删除批注

    概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...

  5. keil常用配置设置

    1.设置tab键为空格4个进入Configuration->Editor,设置如下: 2.代码自动补齐进入Configuration->Editor,设置如下: 3.使用快捷键实现批量注释 ...

  6. MySQL主从复制配置指导及PHP读写分离源码分析

    开发环境 master环境:ubuntu16.04.5LTS/i5/8G/500G/64位/mysql5.7.23/php7/apache2 slave环境:kvm虚拟机/ubuntu14.04.01 ...

  7. JS的arguments

    arguments对象:当前函数内置的全局属性,表示当前函数的所有参数的集合可以用来检测函数实参的个数 使用环境:当函数的参数个数无法确定时,使用arguments 写一个函数输出arguments看 ...

  8. django项目前期准备

    本文转载自 https://blog.csdn.net/xiaogeldx/article/details/89037748 Django现状 Django开发前景 Django的厉害之处 在Pyth ...

  9. Android 应用的逆向和审计

    Android 应用程序拆解 Android 应用程序是在开发应用程序时创建的数据和资源文件的归档文件. Android 应用程序的扩展名是.apk,意思是应用程序包,在大多数情况下包括以下文件和文件 ...

  10. SVN系列操作(一)

    SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,常用于软件开发项目中,实现代码.文档等的历史版本保存.共享和权限管理. 进入SVN本地目录,第一步操作就是updat ...