`
zengshaotao
  • 浏览: 787814 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

二个init方法

 
阅读更多

 init方法是在Servlet实例化之后执行的,并且只执行一次。类中有二个重载的方法,为什么会有二个呢?
.先说init(ServletConfig)中参数ServletConfig,代表的是配置信息。即在web.xml中配置的信息,比如:

    <servlet>
        <servlet-name>RDSDispatchServlet</servlet-name>
<display-name>RDSDispatchServlet</display-name>
        <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
<init-param>
<param-name>useAppserverSecurity</param-name>
<param-value>true</param-value>
</init-param>        
        <load-on-startup>10</load-on-startup>
    </servlet>

   在程序中可以用this.getServletConfig()方法得到ServletConfig的实例,然后用ServletConfig的相应方法 可以得到ServletConfig的名字(getServletName)和配置参数的名字(getInitParameter("name"))或者 名字枚举(getInitParameterNames()),并且通过参数名字得到相应的参数值。具体方法参见API。

二.再说说init方法,从源码中我们不难发现:Servlet接口里面只有init(ServletConfig),这是供tomcat调用的。GenericServlet类里面有成员变量ServletConfig,init(ServletConfig)方法和init()方法:

                        private transient ServletConfig config;

                        public void init(ServletConfig config) throws ServletException{
                            this.config=config;
                            this.init();
                        }

                        public void init() throws ServletException{

                        }
现在一切都很明了了,当容器(tomcat)帮忙调用init(ServletConfig config)并且给传过来一个参数config,这个方法把参数对象的引用指向类的成员变量this.config,并且调用类的 this.init()方法。如果我们在重写Servlet类的init(ServletConfig config),忘记写super.init(ServletConfig config),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfig config)。

 

分享到:
评论

相关推荐

    mysql init的启动方法

    ### MySQL Init的启动方法 MySQL 是一款非常流行的开源关系型数据库管理系统,在Linux环境下,通过init脚本进行MySQL服务的管理是一种常见的做法。本文将详细介绍如何利用init脚本来启动、停止及检查MySQL服务的...

    init “No init found错误信息解析”1

    但是在 Android 系统启动过程中,有时会遇到 "No init found" 错误信息,这个错误信息通常是指 init 二进制文件无法加载或执行。 在本文中,我们将详细解析 "No init found" 错误信息的成因,并提供相应的解决方案...

    sql_init.zip_SQL INIT_dinnerlcl_sql init_sql:init_sql:init()

    后面的“sql:init_sql:init()”可能表示执行的函数或过程名,这在编程中常见于Java或类似的面向对象语言,用于标识一个初始化方法。 描述中的“功能说明:netctoss项目的sql初始化脚本”明确了这个压缩包的内容是...

    spring在@Bean注解中initMethod调用方法异步

    在Spring框架中,`@Bean`注解是一个关键的组件,用于声明一个方法将返回的对象作为Spring容器中的bean。在`@Bean`中定义`initMethod`属性,可以指定该bean初始化时需要调用的方法。当`initMethod`被设置为异步执行,...

    Android8.1 init进程学习

    解析过程涉及到多个类和方法,包括`Parser`和`SectionParser`等,它们负责将配置文件中的内容转换为内部数据结构。 3. **启动服务** 配置文件被解析后,`init`进程会根据其中的指令启动指定的服务。这通常通过`...

    TT随笔二 TInit以及TMap

    本篇随笔“TT随笔二 TInit以及TMap”将探讨这两个主题,聚焦于一个特定的初始化过程(TInit)和一种数据结构(TMap)。 首先,让我们来看看TInit。在很多编程语言中,初始化是一种确保对象或变量在使用前处于预定...

    oracle init.ora 文件据在位置

    本文将详细介绍如何定位`init.ora`文件的具体位置,并通过几个步骤来帮助读者更好地理解和使用这一关键配置文件。 #### 二、Oracle配置文件概述 在Oracle环境中,主要有两种类型的初始化参数文件:文本初始化参数...

    单片机编程中关于code和no-init的用法

    - **第二条语句**: 类似地,定义了一个名为`testData`的数组,同样被标记为`__code`并使用`__no_init`修饰符,但它被存储在指定的地址`PAGE_ADDRESS`处(通常是ROM的一部分)。 **总结** 通过本文介绍,我们可以...

    Android init 启动过程分析

    2. **解析`/init.rc`和`/init.%hardware%.rc`文件**:`init`进程会解析这两个配置文件,这些文件定义了在系统启动过程中需要执行的各种动作和服务。 3. **执行早期初始化动作**:根据`/init.rc`中的定义,执行一...

    android系统从init进程开始到systemserver启动详细流程

    解析`init.rc`的过程涉及到多个函数和方法: - **init_parse_config_file**:解析配置文件。 - **parse_config**:解析单个配置项。 - **next_token**:获取下一个标记。 - **lookup_keyword、kw_is和keywords.h**...

    init-parameter和context-parameter区别

    例如,如果一个Servlet需要一个数据库连接字符串,这个信息可以作为`init-parameter`在web.xml中定义,并在Servlet的`init()`方法中通过`this.getInitParameter()`方法获取。这种方式确保了每个Servlet可以独立地...

    MUI框架--页面init事件

    二、“init”事件详解 1. **事件触发时机**: `init`事件是在页面加载完成后,DOM结构完全解析并准备就绪时触发的。这个事件在MUI中扮演着非常关键的角色,因为它标志着页面初始化阶段的结束,可以在此时执行与页面...

    python中__init__(self)方法和__init__(self,参数1,参数2)的区别(csdn)————.pdf

    在Python编程语言中,`__init__`方法是类中一个非常重要的特殊方法,它被称为初始化方法,用于在创建对象时设置对象的初始状态。理解`__init__`方法的不同用法对于编写高效的Python代码至关重要。以下是关于`__init_...

    InitTask

    Servlet的生命周期包括加载、实例化、初始化、服务、销毁几个阶段,其中`init()`方法在Servlet首次被请求时调用,用于一次性设置Servlet的初始状态。 2. **Servlet生命周期**: - **加载(Load)**:当服务器加载...

    init.ora参数的说明文档.doc

    二、init.ora参数的作用 每个参数都有特定的用途,例如: - **DB_FILE_MULTIBLOCK_READ_COUNT**:该参数定义了在一个I/O操作中可以读取的数据块数量,提高并发I/O性能。 - **pga_aggregate_target**:控制PL/SQL...

    JAVA-web基础知识点

    4. 为什么有 2 个 init 方法 在 Servlet 中,有两个 init 方法,一个是 ServletConfig 的 init 方法,另一个是 HttpServlet 的 init 方法。ServletConfig 的 init 方法用于初始化 ServletConfig 对象,而 ...

    react-native init AwesomeProject 很慢

    2. **计算机性能**:如果你的电脑硬件配置较低,处理大量文件下载和编译任务可能会很吃力。升级硬件,尤其是内存和处理器,可以提高初始化速度。 3. **依赖下载问题**:有时,某些依赖库可能由于版本冲突、仓库更新...

    IAR下使用noinit段的方法和指定地址的变量分配

    2. 为noinit区指定一个固定的区,例如(RAMstart-0x30)到RAMstart,占用0x30个字节。 3. 把.noinit段范围分配到上面定义的noinit_region区,告诉编译器以后被定义成__no_init的变量需要强制放到noinit_region区。 4. ...

    51单片机外部中断/INIT0实验

    二、 INIT0 中断实验的原理 本实验使用 51 单片机,通过外部中断 INT0(P3.2)来触发中断。中断服务程序将对 P1 口的状态进行修改,并将计数器的值加一。同时,通过 C2 区“逻辑笔”电路来显示 P3.3 的状态,以表明...

    第十二天 02__new__和__init__方法【千锋Python人工智能学院】1

    在Python编程语言中,`__new__`和`__init__`是两个非常重要的特殊方法,它们在类的实例化过程中起着关键的作用。这两个方法主要用于控制对象的创建和初始化。 首先,`__new__`方法是类的静态方法,它在创建新对象时...

Global site tag (gtag.js) - Google Analytics