zoukankan      html  css  js  c++  java
  • Servlet生命周期

    什么是Servlet生命周期

    • [x] Servlet容器是如何创建Servlet对象,如何为Servlet对象分配,准备资源,如何调用对应的方法来处理请求以及如何销毁Servlet对象的整个过程为Servlet的生命周期

    生命周期的是个阶段

    • [x] 阶段一:实例化
    • 实例化阶段是Servlet生命周期的第一步,有Servlet容器调用Servlet的构造器创建一个具体的Servlet对象的过程;这个创建的时间可以是容器收到组件的请求之后进行创建,也可以在容器启动后立即创建;创建代码如下:
    1.<servlet>
    2.    <servlet-name>Servlet</servlet-name>
    3.    <servlet-class>test/Servlet</servlet-class>
    4.        <load-on-startup>1</load-on-startup>
    5.</servlet>
    6.<servlet-mapping> 
    7.    <servlet-name>Servlet</servlet-name>
    8.    <url-pattern>/*</url-pattern>
    9.</servlet-mapping>
    

    配置文件中的load-on-startup用于设置Servlet的创建时间,其中的值大于等于0时,表示容器启动时就会创建实例;当值小于0或者没有指定时,表示Servlet被请求时在创建,正数的值越小,优先级越高,启动时就会越被优先创建

    • [x] 阶段二:初始化
    • Servlet在被加载实例化之后,必须要初始化它,在初始化阶段,init()方法会被调用,这个方法在javax.servlet.Servlet接口中定义;ServletConfig类型的对象作为参数,ServletConfig对象由Servlet引擎负责创建,读取事先在web.xml文件中通过配置的name-value值,一般情况下init方法是不需要编写的,因为GenericServlet提供了init方法的实现(注:init方法只被执行一次)
    • 初始化参数
    1.<?xml version="1.0" encoding="UTF-8"?>
    2.<web-app version="2.4" 
    3.    xmlns="http://java.sun.com/xml/ns/j2ee" 
    4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    5.    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    6.    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    7.      <servlet>
    8.        <servlet-name>Servlet</servlet-name>
    9.        <servlet-class>test/Servlet</servlet-class>
    10.            <init-param>
    11.                <param-name>str</param-name>
    12.                <param-value>true</param-valule>
    13.            </init-param>
    14.    </servlet>
    15.    <servlet-mapping> 
    16.        <servlet-name>Servlet</servlet-name>
    17.        <url-pattern>/*</url-pattern>
    18.    </servlet-mapping>
    19.</web-app>
    
    • 读取配置中的初始化方法
    1.package test;
    2.
    3.import java.io.IOException;
    4.
    5.import javax.servlet.ServletConfig;
    6.import javax.servlet.ServletException;
    7.import javax.servlet.http.HttpServlet;
    8.import javax.servlet.http.HttpServletRequest;
    9.import javax.servlet.http.HttpServletResponse;
    10.
    11.public class Servlet extends HttpServlet{
    12.
    13.    public void service(HttpServletRequest request,
    14.                          HttpServletResponse response) 
    15.                          throws ServletException,IOException{
    16.        System.out.println("Servlet's service...");
    17.        ServletConfig config = getServletConfig();
    18.        String str = config.getInitParameter("str");
    19.        System.out.println("str:" + str);
    20.    }
    21.}
    

    阶段三:就绪

    • [x] Servlet被初始化以后就处于能够响应请求的状态,对Servlet的请求由一个ServletRequest对象来表示,Servlet给出的响应由ServletResponse表示;当客户端有请求时,容器会将请求与响应给Servlet,以参数的形式传给service()方法,Servlet通过调用doGet(),doPost()方法来实现响应,doGet(),doPost()方法是由HttpServlet定义的,在没有编写者写方法时,调用会返回一个error信息,所以在每次定义Servlet时都必须去实现doGet(),doPost()方法。

    阶段四:销毁

    • Servlet容器在销毁Servlet对象时会调用destroy方法来释放资源,一般情况下Servlet容器停止或者重新启动都会引起销毁Servlet对象的动作;Servlet容器有自己管理Servlet对象的规则,整个生命周期并不需要人为进行干预
  • 相关阅读:
    通过Eclipse生成可运行的jar包
    消息队列原理概念扫盲
    为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
    iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
    http相关概念在iOS中的使用介绍
    AutoLayout技术选型和应用
    addChildViewController相关api深入剖析
    SymmetricDS 完全配置安装手册
    决策树之 C4.5 算法
    决策树之 ID3 算法
  • 原文地址:https://www.cnblogs.com/sinon/p/6019995.html
Copyright © 2011-2022 走看看