zoukankan      html  css  js  c++  java
  • Servlet程序开发-- Servlet生命周期

    生命周期是一个程序的存在周期,受容器管理,所以容器决定生命周期。

    生命周期包括 加载,初始化,服务,销毁,卸载 5个部分

    加载:第一次使用的时候加载

    初始化:init方法, 失败的话,直接卸载,如果成功的话,进行服务的操作,如果服务不再使用,进行销毁再卸载

    服务:service方法

    销毁:destroy方法

    代码:

    package org.lxh.servletdemo ;
    import java.io.* ;
    import javax.servlet.* ;
    import javax.servlet.http.* ;
    public class LifeCycleServlet extends HttpServlet{
        public void init() throws ServletException{
            System.out.println("** 1、Servlet初始化 --> init()") ;
        }
        public void doGet(HttpServletRequest req,HttpServletResponse resp)
                  throws ServletException,IOException{
            System.out.println("** 2、Servlet服务 --> doGet()、doPost()") ;
        }
        public void doPost(HttpServletRequest req,HttpServletResponse resp)
                  throws ServletException,IOException{
            this.doGet(req,resp) ;
        }
        public void destroy(){
            System.out.println("** 3、Servlet销毁 --> destory()") ;
            try{
                Thread.sleep(3000) ;
            }catch(Exception e){}
        }/*
        public void service(ServletRequest req,
                                 ServletResponse res)
                          throws ServletException,
                                 IOException{
            System.out.println("************ 服务 **************") ;
        }
        */
    }

    web.xml配置:

    <servlet>
            <servlet-name>life</servlet-name>
            <servlet-class>org.lxh.servletdemo.LifeCycleServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>life</servlet-name>
            <url-pattern>/LifeServlet</url-pattern>
        </servlet-mapping>

    init:在第一次运行的时候才会初始化

    销毁destroy:

    1. 容器关闭

    2. 一个servlet长时间不使用

    3. 还有一种开发中的可能性,执行了reload操作

    如果调用service方法的话,主要功能是区分是get请求还是post请求,如果是get请求,则调用doGet方法,如post请求,则调用doPost请求,但是一旦在子类中被覆写之后,则没有了区分此种的能力,所以doGet和doPost都失效了。

    实际上,这种方法更像是一种设计的模板操作,只需要按照要求将方法覆写完成了,那么就可以实现响应的功能。

    当然还有一点需要注意,在正常情况下,初始化是在servlet第一次使用的时候调用,如果需要在容器启动的时候,servlet可以直接进行初始化操作的话,可以设置web.xml文件,增加一个相应的配置参数,表示在容器启动的时候加载参数:

    <load-on-startup>1</load-on-startup>

    总结:

    1. 最重要的就是service方法,doGet,doPost是专门负责处理请求的。

    2. 通过配置web.xml文件可以在服务器启动时自动初始化servlet

  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/wujixing/p/4969308.html
Copyright © 2011-2022 走看看