JavaWeb中web.xml初始化加载顺序详解

发布时间 - 2026-01-11 01:04:31    点击率:

需求说明

做项目时,为了省事,起初把初始化的配置都放在每个类中 static加载,初始化配置一多,就想把它给整理一下,这里使用servlet中的init方法初始化。

web.xml说明

首先了解下web.xml中元素的加载顺序:

  1. 启动web项目后,web容器首先回去找web.xml文件,读取这个文件
  2. 容器会创建一个 ServletContext ( servlet 上下文),整个 web 项目的所有部分都将共享这个上下文
  3. 容器将 转换为键值对,并交给 servletContext
  4. 容器加载filter,创建过滤器, 要注意对应的filter-mapping一定要放在filter的后面
  5. 容器加载servlet,加载顺序按照 Load-on-startup 来执行

完整加载顺序:ServletContext -> context-param -> listener-> filter -> servlet

配置实现

InitServlet.java:

web.xml:(部分配置)

<!-- 初始基础化数据-->
  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>com.acts.web.common.servlet.InitServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitServlet</servlet-name>
    <url-pattern>/InitServlet</url-pattern>
  </servlet-mapping>

servlet介绍

什么是servlet

servlet是sun公司为开发动态web而提供的一门技术,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

  1. 编写一个Java类,实现servlet接口。
  2. 把开发好的Java类部署到web服务器中。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。

servlet的运行过程

  1. 浏览器发出请求,被web容器获取到
  2. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  3. 装载并创建该Servlet的一个实例对象,调用Servlet实例对象的init()方法。
  4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法

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()先初始化,初始化成功后,再响应请求。

PS:一般我们在开发web应用时,都会配置这个参数,有两个好处:

  1. 如果初始化过程失败,则容器会提示启动失败,此时我们能够提前知道相关错误;
  2. 配置该参数相当于将初始化servlet的工作转移到容器启动过程,使得容器只要启动成功后,就可立即响应web请求。

关于load-on-startup一些官网说明:

If the value is a negative integer, or the element is not present, the container is free to load the servlet  
whenever it chooses. If the value is a positive 
integer or 0, the container must load and initialize the servlet as the application is deployed.

注意

使用servlet时,一般都是继承httpServlet,然后分别实现doGet或者doPost方法,但是在这里面要注意的是,这servlet并不是线程安全的,多线程单实例执行的,当并发访问同一个资源的话(成员变量等等),就有可能引发线程安全问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# web.xml加载顺序  # spring xml加载顺序  # web.xml的加载顺序  # 加载  # 放在  # 要注意  # 创建一个  # 如未  # 的是  # 都是  # 就有  # 约定俗成  # 并在  # 并将  # 就可  # 都将  # 想把  # 越高  # 一门  # 这里面  # 重新启动  # 转换为  # 也把 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 中山网站推广排名,中山信息港登录入口?  如何快速配置高效服务器建站软件?  免费网站制作appp,免费制作app哪个平台好?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  晋江文学城电脑版官网 晋江文学城网页版直接进入  三星网站视频制作教程下载,三星w23网页如何全屏?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  JavaScript常见的五种数组去重的方式  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Bootstrap整体框架之CSS12栅格系统  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  开心动漫网站制作软件下载,十分开心动画为何停播?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何在万网利用已有域名快速建站?  实例解析angularjs的filter过滤器  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何自定义建站之星模板颜色并下载新样式?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何实现API资源集合?(Resource Collection教程)  大型企业网站制作流程,做网站需要注册公司吗?  如何在建站主机中优化服务器配置?  如何快速生成专业多端适配建站电话?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel如何实现API版本控制_Laravel版本化API设计方案  Swift中循环语句中的转移语句 break 和 continue  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  动图在线制作网站有哪些,滑动动图图集怎么做?  BootStrap整体框架之基础布局组件  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何快速生成可下载的建站源码工具?  详解Android——蓝牙技术 带你实现终端间数据传输  如何用AWS免费套餐快速搭建高效网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  香港服务器WordPress建站指南:SEO优化与高效部署策略  js代码实现下拉菜单【推荐】  如何实现建站之星域名转发设置?  原生JS实现图片轮播切换效果  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  ,怎么在广州志愿者网站注册?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  教你用AI将一段旋律扩展成一首完整的曲子  Laravel怎么为数据库表字段添加索引以优化查询  如何撰写建站申请书?关键要点有哪些?  做企业网站制作流程,企业网站制作基本流程有哪些?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐