容器创建了Servlet实例后,它将调用实例的init(ServletConfig)方法初始化Servlet.该方法的参数ServletConfig对象包含了在WEB应用程序的部署描述文件中指定的初始化参数。在init(ServletConfig)调用完后,容器将调用init() 方法,之后Servlet就被初始化了。
 
两者不同定义:
void init(ServletConfig config)  throws ServletException 
public void init() throws ServletException
 
原理如下:
  1、如果用户不需要设置一些初始化操作,那么init()方法的实现可有可无,因为可以从父类GenericServlet中继承得到。
  2、如果用户需要servlet通过从web.xml中读取initialization parameters或者configuration data,那么就需要显式实现init()方法。
  3、GenericServlet 提供两个overloaded形式的方法如下:
    public void init() throws ServletException
    public void init(ServletConfig) throws ServletException
  4、Servlet interface只定义一个init(ServletConfig)方法,而且servlet加载时必须被调用,但只在第一次加载被调用一次。
  5、GenericServlet实现了这个init(ServletConfig)方法,这个方法先保存ServletConfig reference,然后调用init()方法。
  6、如果用户servlet实现init()方法并在其中填充自己需要初始化的信息,这个init()会被GenericServlet中的init(ServletConfig)方法调用,因为ServletConfig                 reference已经被保存,所以你可以访问web.xml中的。
  7、如果用户servlet实现init(ServletConfig),那么就覆盖了GenericServlet(父类)init(ServletConfig)方法,因此,GenericServlet会调用子类的方法,而不会保               存ServletConfig reference,必须执行super.init(config)才能保存ServletConfig reference访问web.xml中的。
  8、所以有两种方法初始化:
  第一种
  public class LoginServlet extends HttpServlet 
  {
      public void init() throws ServletException 
      {
    }
  }
  第二中
  public class LoginServlet extends HttpServlet 
  {
      public void init(ServletConfig config) throws ServletException 
      {
          super.init(config)
      }
  }
  9、servlet初始化正常结束,才能处理处理用户的请求,如果在初始化方法init()中出现错误,那么需要throw a ServletException或者父类的UnavailableException,               这会告诉servlet容器初始化失败,不能处理任何请求。

两个init方法的区别的更多相关文章

  1. iOS学习——UITableViewCell两种重用方法的区别

    今天在开发过程中用到了UITableView,在对cell进行设置的时候,我发现对UITableViewCell的重用设置的方法有如下两种,刚开始我也不太清楚这两种之间有什么区别.直到我在使用方法二进 ...

  2. Servlet详解之两个init方法的作用

    在Servlet中 javax.servlet.GenericServlet类 继承自java.lang.Object 实现了Serializable,,servlet ,ServletConfig ...

  3. JS中的两种刷新方法以及区别和适用范围

    在项目中有一个人信息修改的页面,但是修改后显示的却是修改之前的内容,分析问题后发现查询语句写在了修改语句之前,有些某些需要又必须这么写,但是修改信息后先却显示之前的信息也太不科学了. 所以我就想用js ...

  4. 在Servlet的GenericServlet类中为什么有两个init()方法

    想要搞清楚这件事情,必须先了解Servlet容器调用Servlet的过程.调用过程如下 首次访问该Servlet1.调用init(ServletConfig config) 进行初始化,Servlet ...

  5. 关于UIImage类的对象两种初始化方法的区别

    1.imageNamed: UIImage *image = [UIImage imageNamed:"]; UIImage的类方法 第一次读取图片的时候,先把这个图片放到缓存中,下次再使用 ...

  6. GET和POST两种请求方法的区别(RFC翻译)

    GET和POST方法是HTTP协议规定的.查了HTTP1.1的RFC,原文的专业性极强.下面是白话翻译,欢迎补充和指错. GET方法就是检索(以实体的形式)由请求uri所指定的资源.如果请求的uri指 ...

  7. Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

  8. View inflate方法和LayoutInflater inflate方法的区别详解

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/6257510.html 我们在Android开发中,对于将布局填充成View对象,最常用的两种办法 ...

  9. Android(java)学习笔记170:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

随机推荐

  1. Web安全学习笔记之Kali部署DVWA和OWASPBWA

    0x0 前言 kali安装完成,下面要进行实战操作了,喵~~(OWASPBWA请直接跳到第八部分) #既然你诚心诚意的问了,我们就大发慈悲的告诉你! #为了防止世界被破坏! #为了守护世界的和平! # ...

  2. @Override笔记

    作用:用来保证正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误. 使用场景:继承父类,重写父类方法:实现接口,实现接口方法. 备注:jdk1.5之允许在继承时使用, ...

  3. 20145301 实验三 "敏捷开发与XP实践"

    20145301 实验三 "敏捷开发与XP实践" 课程:Java程序设计  班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.22 实验名称:敏捷开发与XP实践 一.实验 ...

  4. 20145302张薇《Java程序设计》第四周学习总结

    20145302 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承共同行为 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承. 程序代 ...

  5. Calling Convention的总结

    因为经常需要和不同的Calling Convention打交道,前段时间整理了一下它们之间的区别,如下: 清理堆栈 参数压栈顺序 命名规则 (MSVC++) 备注 Cdecl 调用者 (Caller) ...

  6. tomcat监控,自动重启shell脚本

    tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh: #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中 ...

  7. 初识numpy的多维数组对象ndarray

    PS:内容来源于<利用Python进行数据分析> 一.创建ndarray 1.array :将一个序列(嵌套序列)转换为一个数组(多维数组) In[2]: import numpy as ...

  8. tcp cubic代码分析

    /* * TCP CUBIC: Binary Increase Congestion control for TCP v2.3 * Home page: * http://netsrv.csc.ncs ...

  9. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  10. 新东方雅思词汇---10.1、(a)esthet

    新东方雅思词汇---10.1.(a)esthet 一.总结 一句话总结: 感觉 aesthetic 英 [i:sˈθetɪk]  美 [esˈθetɪk; ɛsˈθɛtɪk]  adj. 美的:美学的 ...