`

servlet的init方法

阅读更多
init方法是在Servlet实例化之后执行的,并且只执行一次。
一.先说init(ServletConfig)中参数ServletConfig,代表的是配置信息。即在web.xml中配置的信息,比如:
                        <servlet>              
                                <servlet-name>myfirstservlet</servlet-name>          
                                <servlet-class>as</servlet-class>  
                                <init-param>
                                    <param-name>name</param-name>
                                    <param-value>小明</param-value>
                                </init-param>
                                <init-param>
                                    <param-name>age</param-name>
                                    <param-value>25</param-value>
                                </init-param>
                        </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)就可以了,init()不就成了多余的了吗?实际上init()方法是为了防止程序员在写Servlet类重写 init(ServletConfig config)时忘记写super.init(ServletConfig config),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfig config),而要重写init()方法,就可以不写super。Servlet,你真是绕死人不偿命!
分享到:
评论

相关推荐

    JSP开发Servlet重写init()方法实例详解

    JSP开发Servlet重写init()方法实例详解 写一个Servlet时,有时需要我们重写该Servlet的初始化方法,然后,究竟是重写init(ServletConfig config),还是重写init(),这是个问题。要明了这一点,首先要知道Servlet的...

    servlet運行原理詳解 自我學習整理

    服務器就會分配一個線程來服務這個http請求,web容器會檢查是否有與此http url映射對應的servlet,如果沒有servlet容器會根據web.xml配置文件加載對應的servlet,并創建此servlet的實例,調用servlet init方法進行...

    Servlet实验报告.pdf

    本实验报告的主要目的是掌握 Servlet 应用,熟悉 web 开发的 MVC 模式,了解 servlet 的工作流程和作用,并掌握 servlet 的方法 init()、destory()、doGet()、doPost()。 一、实验目的 1. 掌握 Servlet 应用,熟悉...

    servlet中方法执行次序及API简介(init,service,doservice,doget等)

    - **javax.servlet.Servlet**:Servlet的基接口,定义了init(), service(), destroy()等生命周期方法。 - **javax.servlet.GenericServlet**:实现了Servlet接口的抽象类,提供了空的生命周期方法实现,方便自定义...

    Servlet接口及方法

    init方法 ```java public void init(ServletConfig config) throws ServletException; ``` **作用:** 初始化Servlet实例,通常用于配置环境变量、加载资源文件等工作。该方法在Servlet实例化之后、首次调用`...

    自己写的用于Servlet中doGet方法转码

    在这个特定的场景中,我们关注的是如何在Servlet的`doGet`方法中进行字符编码的转换,特别是将数据从一种编码格式转换为UTF-8。 首先,让我们了解字符编码的基本概念。字符编码是将字符(如字母、数字和符号)转换...

    Servlet中文内部教程

    1. **初始化阶段**:Servlet首次被加载到Servlet容器中时,会调用`init()`方法进行初始化。 2. **响应客户请求阶段**:每当客户端发送请求时,Servlet容器会创建一个线程并调用`service()`方法来处理请求。 3. **...

    servlet基础与servlet容器模型

    `init()`方法在Servlet实例化后首次调用,用于初始化Servlet;`service()`方法处理每个到来的请求;而`destroy()`方法在Servlet不再使用时调用,用于释放资源。 接下来,我们探讨Servlet容器模型。Servlet容器,如...

    servlet执行过程与生命周期

    `init()`方法只会在Servlet的生命周期中被调用一次,主要用于加载资源、创建数据库连接等初始化操作。完成初始化后,Servlet便处于待命状态,准备接收客户端的请求。 #### 二、Servlet的请求处理 当客户端发送请求...

    com.oreilly.servlet

    然后调用`init()`方法进行初始化,`service()`方法处理每个请求,最后在不再需要Servlet时调用`destroy()`方法。 2. **Servlet配置**:在Web应用的`web.xml`部署描述符中,我们可以配置Servlet,包括映射URL模式、...

    如何运行servlet(第一个servlet).doc

    init 方法用于初始化 Servlet,doGet 和 doPost 方法用于处理 GET 和 POST 请求,destroy 方法用于释放资源。在我们的示例中,我们将编写一个简单的 HelloWorldServlet,它将在浏览器中打印出 "hello world!"。 在...

    servlet源码 servlet-api-src javax.servlet.Servlet源码

    `init()`方法在Servlet实例被创建并准备处理请求之前调用,用于初始化Servlet。在这里,开发者可以进行一些一次性设置,如加载配置信息或建立数据库连接。`service()`方法是Servlet处理请求的核心,它根据请求类型...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - 初始化:当Servlet首次被请求或者在web.xml中配置了`load-on-startup`时,Servlet容器会调用Servlet的`init()`方法进行初始化。 - 服务:每当有新的请求到来,Servlet容器创建一个Servlet实例,然后调用`service...

    Servlet基础知识总结

    5. **调用init()方法**:如果这是Servlet实例首次被创建,Web容器会调用其`init()`方法来初始化该实例。 6. **处理请求**:Web容器创建一个`HttpServletRequest`对象和一个`HttpServletResponse`对象,并调用Servlet...

    Servlet中文API文档 servlet

    Servlet容器(如Tomcat)会在第一次请求时加载Servlet并调用init()方法,之后每次请求都会调用service()方法,最后在容器关闭或Servlet不再需要时调用destroy()方法。 5. **Servlet配置**:Servlet的配置通常在web....

    Servlet的应用与配置

    2. 服务阶段:在 init 方法调用后,Servlet 将调用 service 方法,该方法用于处理请求和响应。 3. 销毁阶段:在服务阶段结束后,Servlet 将调用 destroy 方法,该方法用于释放资源和销毁 Servlet 实例。 三、...

    servlet temple

    缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应...

Global site tag (gtag.js) - Google Analytics