• 回顾servlet生命周期(代码测试),读取初始化参数


    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));
            }
    
        }
  • 相关阅读:
    二维码生成插件(jquery.qrcode.js)说明文档
    JS&PHP如何实现二维码的生成以及识别(代码)
    【干货】Chrome插件(扩展)开发全攻略 写在前面
    电脑连接并调试手机浏览器的网页
    php操作mysql数据库(增删改查)
    springBoot+springCloud学习笔记
    HttpClient远程调用接口
    fastjson List<> 转Json , Json 转List<>
    连接redis失败,关闭防火墙即可
    复习mybatis框架(一)----映射文件
  • 原文地址:https://www.cnblogs.com/qq931399960/p/10283952.html
Copyright © 2020-2023  润新知