开发者社区> 问答> 正文

servlet load-on-startup只会调用init方法?

发现doGet、doPost、service方法都不调用,那我怎么获取request对象。。像这类load-on-startup的servlet实现原理是什么,服务器启动的时候就触发一个模拟的请求(显然不是)还是?

展开
收起
蛮大人123 2016-03-04 18:47:54 2315 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    load-on-startup只是web.xml中一个配置,其意义表示是否在web应用启动后立即加载该servlet。

    1.load-on-startup >=0 时,表示在web应用启动后立即加载,其中load-on-startup的值越小,表示加载的优先级越高,如果两个servlet的load-on-startup值相同,则其加载优先级有容器决定;
    2.load-on-startup 未配置时,则该servlet的加载由容器决定;
    需要特别说明一下,如你所说,配置load-on-startup后,servlet在startup后立即加载,但只是调用servlet的init()方法,用以初始化该servlet相关的资源。初始化成功后,该servlet可响应web请求;如未配置load-on-startup,容器一般在第一次响应web请求时,会先检测该servlet是否初始化,如未初始化,则调用servlet的init()先初始化,初始化成功后,再响应请求。
    一般我们在开发web应用时,都会配置这个参数,有两个好处:1、如果初始化过程失败,则容器会提示启动失败,此时我们能够提前知道相关错误;2、配置该参数相当于将初始化servlet的工作转移到容器启动过程,使得容器只要启动成功后,就可立即响应web请求。

    2019-07-17 18:52:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载