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

  • 相关阅读:
    zkRollup原理(转载)
    2012元旦遭遇坑爹的12306订票网站付了款不出票
    VM.xPort.ExcelClient XXX备忘
    Parsing html markup text using MSHTML
    Asp.net中模仿Winform的MessageBox
    ReportViewer 2008 打印出现Error loading resource library. (0x8007007E)和(0x80070006)
    使用ADO.net将数据导出到Excel并提供下载
    【备忘】Oracle常用系统表(做代码生成器用得到)
    Worm.Sober.b(“清醒”病毒)
    发布基于T4模板引擎的代码生成器[Kalman Studio]
  • 原文地址:https://www.cnblogs.com/wujixing/p/4969308.html
Copyright © 2011-2022 走看看