前几天跟几个同学聊到这个,
我一直认为的是说:在容器启动的时候,就会加载web.xml然后将里面的servlet进行初始化加载,
然后调用其init方法。
可是一个同学说:是在第一个请求到来的时候才调用init方法。
另外一个同学说:跟配置的servlet的
<load-on-startup>1</load-on-startup>
这个参数有关。
我当时想了下说,会不会load-on-startup配置为0就是默认跟容器一起初始化,否则就是第一次请求的时候初始化。
带着这个疑问做了下简单的servlet的测试。。
public class SimpleDispatherServlet extends HttpServlet
public void init() throws ServletException {
System.out.println("SimpleDispatherServlet init");
}
web.xml中的配置
<servlet>
<servlet-name>simpleDispatherServlet</servlet-name>
<display-name>simpleDispatherServlet</display-name>
<servlet-class>SimpleDispatherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
看到控制台中打印出来了
[INFO] Starting jetty 7.0.1.v20091125 ...
2010-05-15 21:14:31.855:INFO::jetty-7.0.1.v20091125
2010-05-15 21:14:32.155:INFO::No Transaction manager found - if your webapp requ
ires one, please configure one.
SimpleDispatherServlet init
。。。。
事后,我又将load-on-startup进行了参数更改,还是一样init方法还是跟容器启动的时候一起调用。不存在影响的问题。
看来load-on-startup跟这没关系的。想想还是我之前理解的是正确的,servlet的初始化方法一般都包括读取配置文件等很多事情,如果放在第一次请求的时候才发现问题,才进行加载,也有些太不靠谱了。
ok,记录一下!~
===============================================
刚开始做了这个实验觉得不靠谱,又去查询了servlet的API,具体写在下一篇博客:
http://guoliangqi.iteye.com/blog/670710
API里面很清楚的说明了oad-on-startup对servlet初始化的影响。
分享到:
相关推荐
本文主要讲解 Servlet 初始化参数和上下文初始化参数的概念、定义、配置和获取方法。同时,通过实践演示,展示了如何在 Servlet 中读取初始化参数和上下文初始化参数,并将其显示在网页上。 一、Servlet 初始化参数...
当Web应用启动时,`ActionServlet`作为Servlet初始化并存入Tomcat容器中。这一过程发生在Struts首次被使用时。`ActionServlet`在初始化过程中主要负责配置和管理整个Struts应用的环境,包括但不限于配置文件的加载、...
`init()`方法只会在Servlet的生命周期中被调用一次,主要用于加载资源、创建数据库连接等初始化操作。完成初始化后,Servlet便处于待命状态,准备接收客户端的请求。 #### 二、Servlet的请求处理 当客户端发送请求...
1. init() 方法:在 Servlet 生命周期中第一个被调用的方法,用于初始化 Servlet。 2. destory() 方法:在 Servlet 生命周期中最后一个被调用的方法,用于释放 Servlet 占用的资源。 3. doGet() 方法:处理 GET 请求...
init() 方法只会被调用一次,用于完成 SERVLET 的初始化工作。 service() 方法是 SERVLET 生命周期的第二个阶段,在这个阶段,SERVLET 容器会将用户的请求传递给 SERVLET,并调用 SERVLET 的 service() 方法,以...
#### 三、Servlet初始化 Servlet的初始化是一个重要的步骤,涉及到资源的分配和准备。初始化过程主要由容器(如Tomcat)负责,具体步骤如下: 1. **加载Servlet类**:当服务器启动并接收到针对某个Servlet的第一个...
- 如果Servlet已经被卸载,则在新的Servlet被初始化之前,此方法不会被调用。 ##### 3. destroy方法 ```java public void destroy(); ``` **作用:** 当Servlet从服务中移除时,Servlet容器会调用此方法来释放...
`ServletConfig`接口提供了对Servlet初始化参数和Servlet上下文的访问,是Servlet与Servlet容器之间的桥梁。 - **getServletConfig()方法:** 返回传递给`init()`方法的`ServletConfig`对象,用于获取Servlet的配置...
`init()`方法只在Servlet的生命周期中被调用一次,因此它是设置Servlet初始状态的好时机。 3. **服务**: 初始化完成后,Servlet开始处理客户端的请求。每当一个HTTP请求到达,服务器会检查该请求是否属于已存在的...
Servlet接口定义了一个`init(ServletConfig config)`方法,这个方法在Servlet被加载到服务器后首次调用,用于初始化Servlet实例。`ServletConfig`接口提供了访问Servlet配置信息的方法,如获取Servlet名称、Servlet...
3. **在Servlet中调用初始化方法**:在Servlet的`init()`方法中,获取Web应用的根目录,结合配置的文件名,构造出配置文件的完整路径,然后使用`PropertyConfigurator.configure()`方法进行初始化。 ```java ...
1. `void init(ServletConfig config) throws ServletException`:这是Servlet的初始化方法,当Servlet容器(如Tomcat)加载Servlet时调用。ServletConfig对象在此方法中传递,包含了Servlet的配置信息,如初始化...
- `init(ServletConfig config)`: 这是Servlet的初始化方法,当Servlet被加载到服务器时调用一次。ServletConfig对象传递给这个方法,提供了关于Servlet配置的信息。 - `service(ServletRequest request, Servlet...
ServletConfig对象提供了访问Servlet初始化参数的方法,这些参数是在web.xml文件中配置的。例如,可以获取Servlet的名称、初始化参数值等。 6. **ServletContext接口** ServletContext代表整个Web应用的上下文,...
init()方法负责初始化Servlet,service()方法负责处理请求,destroy()方法负责清理资源。doGet()和doPost()方法是service()方法的两个重要组成部分,它们负责处理GET和POST请求。 在Servlet生命周期中,init()方法...
1. **init()**:Servlet初始化时调用此方法。在Servlet实例化后,容器(如Tomcat)会调用此方法进行初始化操作。开发者可以在这里进行配置加载、资源绑定等一次性设置。例如,你可以加载属性文件,创建数据库连接池...
一旦Servlet对象被创建,容器会调用Servlet对象的`init(ServletConfig config)`方法进行初始化。在这个方法中,开发者可以进行一些设置和资源的加载,比如打开数据库连接、读取配置文件等。`getServletContext()`...
`init`方法在servlet初始化时被调用,`service`方法在每次请求到来时被调用,而`destroy`方法在servlet被销毁前被调用。 #### 结论 通过以上分析,我们可以看到servlet提供了一种强大的机制来处理Web请求。它们...
1. 初始化阶段:在容器实例化 Servlet 实例后,会调用 init 方法,该方法用于初始化 Servlet 并传入 ServletConfig 对象。 2. 服务阶段:在 init 方法调用后,Servlet 将调用 service 方法,该方法用于处理请求和...