• Servlet强化


    Servet的运行过程及生命周期

    Servlet程序是由WEB服务器调用,web服务器收到客户端的ServletWeb服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第(4)步,否则,执行第(2)步。

    访问请求后:

    (1)装载并创建该Servlet的一个实例对象。

    (2)调用Servlet实例对象的init()方法。

    (3)创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

    (4)WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。 

    Servet的生命周期:

    Servlet 的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。

    生命周期如下:

    • (1)通常情况下,服务器会在Servlet第一次被调用时创建该Servlet类的实例对象(servlet出生),创建出对象后立即调用init()方法做初始化操作;
    • (2)一旦被创建出来,该Servlet实例就会驻留在内存中,为后续对这个Servlet的请求做服务,每次对这个Servlet的访问都会导致Servlet中Service方法执行;
    • (3)当web应用被移除容器或者关闭服务器时,随着web应用的销毁,Servlet也会被销毁(servlet死亡)。在销毁之前服务器会调用Servlet的destroy方法做一些善后的工作。

    有3个方法代表了Servlet的生命周期:

    • init方法,负责初始化Servlet对象。
    • service方法,负责响应客户的请求(调用doGet或doPost等方法)。
    • destroy方法,当Servlet对象退出生命周期时,负责释放占用的资源。

    注:在Servlet的整个生命周期内,Servlet的init方法只有在servlet被创建时被调用一次,每次对这个Servlet的访问都会导致Servlet中Service方法执行。

    package com.vae.servlet;
     2 import java.io.IOException;
     3 import java.io.PrintWriter;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 //一般实现一个Servlet,只要继承HttpServlet类即可
     9 public class MyServlet extends HttpServlet {
    10     //Servlet初始化时调用的方法
    11     @Override
    12     public void init() throws ServletException {
    13         super.init();
    14         System.out.println("init....");
    15     }
    16     
    17     //Servlet被销毁时调用的方法
    18     @Override
    19     public void destroy() {
    20         super.destroy();
    21         System.out.println("destroy...");
    22     }
    23     //-------doGet/doPost 核心的业务处理方法(由service方法来调用)------------    
    24     @Override
    25     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    26             throws ServletException, IOException {
    27         //super.doGet(req, resp);
    28         doPost(req, resp);
    29         System.out.println("do service...");
    30     }
    31     
    32     @Override
    33     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    34             throws ServletException, IOException {
    35         //super.doPost(req, resp);
    36     }
    37 }
  • 相关阅读:
    eslint 规则
    我的.eslintrc.js
    shell命令
    .sync 修饰符的理解
    【HNOI 2018】寻宝游戏
    【BZOJ 2820】YY的GCD
    【Luogu P2664】树上游戏
    【HAOI 2012】高速公路
    句摘
    【SCOI 2008】奖励关
  • 原文地址:https://www.cnblogs.com/paoge/p/13659554.html
Copyright © 2020-2023  润新知