Java Web技术(init()与init(ServletConfig)的区别)
来源:互联网 发布:微量氧分析仪 淘宝 编辑:程序博客网 时间:2024/06/01 09:25
init方法是在Servlet实例化之后执行的,并且只执行一次。
先说init(ServletConfig)中参数ServletConfig,代表的是配置信息。即在web.xml中配置的信息。
在程序中可以用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()方法。实际上init()方法是为了防止程序员在写Servlet类重写 init(ServletConfig config)时忘记写super.init(ServletConfig config),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfig config),而要重写init()方法,就可以不写super。
总结:在init(ServletConfig)方法调用后,容器将调用无参数的init()方法,之后Servlet就被初始化了。重复初始化一个对象是没有意义的,因此在Servlet生命周期中init()方法仅被调用一次。
- Java Web技术(init()与init(ServletConfig)的区别)
- tomcat的init()与init(ServletConfig config)
- init()与init(ServletConfig config)
- 两个Init()方法的区别
- JAVA基础(二) web.xml中<context-param>与<init-param>的区别与作用
- <init>与<clinit>的区别
- <init>与<clinit>的区别
- <init>与<clinit>的区别
- onEnter与init的区别
- <init>与<clinit>的区别
- <init>与<clinit>的区别
- web.xml之<context-param>与<init-param>的区别
- spring的延迟初始化bean (default-lazy-init 与 lazy-init )
- spring的延迟初始化bean (default-lazy-init 与 lazy-init )
- 关于servlet init parameters 与 context init parameters的区别
- git init 与 git init --bare 的区别
- git init 与 git init --bare 的区别
- linux etc/init 与etc/init.d的区别
- Linux下LED驱动测试(应用程序)源码
- Fedora硬盘安装Fedora17图文教程
- PHP采集 抓取
- 最长公共子序列 南工36
- 鲜为人知的编程真相
- Java Web技术(init()与init(ServletConfig)的区别)
- TCP segment of a reassembled PDU
- JavaScript中this的使用
- SimpleAdapter 动态加载数据
- extjs-布局 (在column布局中使用fieldset 和 在fieldset中使用column布局)
- 实战物料主数据(MM01/MM02/MM03)屏幕增强
- cocos2d中的anchorPoint
-  |"|&|<|>等html字符转义
- linux系统调用和库函数调用的区别