jsp开发servlet重写init()方法实例详解

写一个servlet时,有时需要我们重写该servlet的初始化方法,然后,究竟是重写init(servletconfig config),还是重写init(),这是个问题。要明了这一点,首先要知道servlet的几个类和接口的联系:

servletconfig接口:其中有getservletname();getservletcontext();getinitparameter(string name);getinitparameternames()四个方法。

servlet接口:其中有init(servletconfig config)方法

|--->genericservlet抽象类:其中有private transient servletconfig config;属性

|--->httpservlet类

通过查看源码,发现httpservlet中没有init方法.而在genericservlet抽象类中则实现了servlet#init(servletconfig config)方法,不仅如此,还更添加了一个新的不带参数的init()方法。而且在带参数中的init方法中调用了不带参数的init方法。

应该知道,在servlet初始化的时候,会自动调用init(servletconfig config),container会自动收集一些该servlet的配置信息,生成一个servletconfig的实例,通过调用该实例的四个getxxx方法(即servletconfig接口中的四个方法),我们可以得到该servlet的这些配置信息。

而该实例我们如何获取呢?是通过servlet#getservletconfig()得到的,该方法同样在genericservlet中实现,具体如下:

public void init(servletconfig config) throws servletexception {

this.config = config;

this.init();

}

public servletconfig getservletconfig() {

return config;

}

我认为init()的出现,是为了解决一个问题,那就是有些人最开始时候,重写init(servletconfig config)方法,但却总是忘记去调用“super.init(config);”。试想,如果真的出现这种情况,那么,就会造成一种结果,容器收集的servlet的配置信息,不能初始化给genericservlet的config属性,以至于当调用getservletconfig()的时候,会得不到有用的config实例,而只能得到一个null。这样也就无法获取该servlet的配置信息了。

而无参数的init()方法在genericservlet中的出现,解决了这种或许人为造成的获取不到servletconfig对象的尴尬。可以看到含参init方法调用了无参init,这就让我们可以在处理servlet初始化参数的时候,只需要重写无参的init()方法就行了。初始化config对象的操作仍然在container调用init(servletconfig config)时候完成,然后调用你重写了的init()方法,完成其他初始化操作。

综合来看,是重写含参还是不含参的init方法,并没有严格的规定,只是如果重写含参init方法,需要先调用父类的含参init方法罢了。两种调用如下:

public void init(servletconfig config) throws servletexception {

super.init(config);

//...code...

}

public void init() throws servletexception {

//...code...

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

希望与广大网友互动??

点此进行留言吧!

java servlet init方法_JSP开发Servlet重写init()方法实例详解相关推荐

  1. ios 扇形 按钮_IOS 开发中画扇形图实例详解

    IOS 开发中画扇形图实例详解 昨天在做项目中,遇到一个需要显示扇形图的功能,网上搜了一下,发现code4app里面也没有找到我想要的那种类似的效果,没办法了,只能自己学习一下如何画了. 首先我们需要 ...

  2. php 如何封装类库,ThinkPHP里的import方法用于类库导入的封装实现实例详解

    ThinkPHP里的import方法用于类库导入的封装实现实例详解 分类:PHP_Python| 发布:佚名| 查看: | 发表时间:2014/7/1 import方法是ThinkPHP框架用于类库导 ...

  3. python把数据写入excel_Python读写sqlite3数据库的方法并且将数据写入Excel的实例详解...

    这篇文章主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下 本文实例讲 ...

  4. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  5. java生成字符串数组_Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...

  6. java.exe 安装程序_java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...

  7. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  8. java中csv文件怎么制作_Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  9. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

最新文章

  1. Mac OS X 下Node.js开发环境的搭建
  2. 为什么你的问题总是没人回答
  3. linux 英伟达 分辨率,配置nVidia显卡修改Ubuntu分辨率
  4. java中怎样导入图片6_java程序员进阶篇之必须掌握的6张思维导图!
  5. 题解:一些递推的题。
  6. C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)
  7. 洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
  8. python允许无止境的循环_ParisGabriel:Python无止境 day03
  9. 【codevs1281】Xn数列,矩阵乘法练习
  10. AI与中国未来就业白皮书发布:70%职业受冲击,江浙机器换人大潮汹涌
  11. django 查询mysql_Django 数据库查询方法一
  12. Debian - 搭建Debian本地APT源
  13. Java selenium 设置代理
  14. python丨Scrapy框架案例二:阳光问政平台
  15. ps在线版 Photoshop在线精简版-toolfk程序员在线工具网
  16. 数据结构_树与二叉树总结
  17. 这个时间戒夜奶很合适, 错过了不仅宝宝会受伤害, 妈妈也会很累
  18. android删除本地图片,Android中结合contentResolver.delete和file.delete实现本地图片的删除...
  19. android存储文件数据恢复,安卓手机文件如何恢复?
  20. django 连接oracle的坑和解决方法

热门文章

  1. 【PC工具】更新!windows图片文字识别软件,天若OCR免费文字识别软件
  2. 异部时钟电路的FPGA设计
  3. MySQL-MongoDB开源监控利器之PMM
  4. HTML5本地存储——Web SQL Database
  5. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
  6. Python 性能剖分工具
  7. 关于火狐中ashx中输出javascript一闪而过的问题
  8. Android开发_如何调用系统默认浏览器访问
  9. CollaDec 之前的三个SharePoint工具开源发布
  10. Win10下VisualStudio2019安装和Helloworld测试