前几天跟几个同学聊到这个,
我一直认为的是说:在容器启动的时候,就会加载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初始化的影响。
分享到:
相关推荐
缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应...
这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。 b、doFilter(ServletRequest,ServletResponse,FilterChain)...
当客户第一次请求时,首先判断是否存在servlet对象,第一次请求时不存在,则由tomcat创建对象,调用init()方法对其初始化,用service()方法判断是post请求还是get请求,调用对应的方法返回给客户。 当客户第...
通过调用servlet的init()方法进行servlet的初始化。 通过调用service()方法实现,根据请求的不同调用不同的do***()方法。 结束服务,web容器调用servlet的destroy()方法。 3、Servlet的基本架构 public class ...
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。 init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并...
Servlet生命周期与工作原理 Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段:
servlet程序设计与支持 Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法
Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy...
方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。 2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,...
34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点和原理。并考虑2 种回收机制。 11 38...
34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点和原理。并考虑2 种回收机制。 11 38...
在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init、service、destroy等方法,Servlet在初始化时要调用init方法,在销毁时要...
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用de
2.初始化:服务器实例化之后会调用init()方法,执行初始化逻辑。该方法默认是空白的,开发者希望servlet 实例化之后执行什么样的逻辑,可以在这个方法中写代码。该方法在servlet生命周期中,只会执行一次。 3.服务:...
当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要...
1.Servlet 通过调用 init () 方法进行初始化。 2.Servlet 调用 service() 方法来处理客户端的请求。 3.Servlet 通过调用 destroy() 方法终止(结束)。 4.最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的...
(2)初始化(调用init方式,进行初始化)实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作) (3)
1.初始化,调用init()方法,生成Servlet实例 2.响应客户请求,调用service()方法,由service()方法根据提交方式悬着执行doGet
Servlet 点击计数器 ...很多时候,您可能有兴趣知道网站的某个特定页面上的总点击量。... ...在 init() 方法中初始化一个全局变量。...在下次初始化 Servlet 时,该值可在 init() 方法内被读取。这一步是可选的。 如果您只
Java框架ssh/ssm Spring 什么是 spring? Spring 是个 java 企业级应用的开源开发框架。...(默认) 2,调用 Servlet 对象的 init()方法,初始化 Servlet 的信息,init()方法只会在创建后被调用一次; 3,响应请求