Web容器启动过程中如何执行Java类
作者:贾小仙 发布时间:2022-10-01 19:49:10
1.监听(Listener)
<!-- 配置监听 -->
<listener>
<listener-class>com.xian.jdbc.GetProperties</listener-class>
</listener>
package com.xian.jdbc;
public class GetProperties{
} //implements ServletContextListener
可实现servlet的监听则启动中直接运行输出。不实现也有作用。。未知
2.spring初始化bean时
1、在需要进行操作的bean的xml定义中加上init-method属性,指定下启动时运行哪个方法;
2、实现InitializingBean接口,Spring在启动时会自动调用这个接口中的初始化方法
public class SysInitBean implements InitializingBean,ServletContextAware{public void afterPropertiesSet() throws Exception {//初始化代码 }}<span style="background-color: rgb(226, 226, 226); "> </span>
实现InitializingBean接口就可以获取spring的所有配置信息。
实现ServletContextAware,可以获得servletcontext
3.servlet的init()方法
自动执行servlet
写一个servlet,在init()方法中写好想要执行的程序,
同时,在web.xml配置文件中指出
<servlet>
<servlet-name>XXXX</servlet-name>
<servlet-class>XXXX</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
load-on-startup的值必须为整数,当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高
Web.xml加载顺序:
1 、启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点。
2 、紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文。
3 、容器将 <context-param> 转换为键值对,并交给 servletContext 。
4 、容器创建 <listener> 中的类实例,创建 * 。
由此,可以看出, web.xml 的加载顺序是: context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。
来源:https://www.cnblogs.com/hackerxian/p/10871678.html


猜你喜欢
- 题目要求:两人比赛,A,B,每人最开始分得6张手牌,手牌大小为从1到9 A先出牌,B后出牌,若出牌在桌面上存在,在出牌人获得两张相同牌中间的
- 哈希 Hash 算法介绍哈希算法也叫散列算法, 不过英文单词都是 Hash, 简单一句话概括, 就是可以把任意长度的输入信息通过算法变换成固
- 本文实例为大家分享了Java实现邮件找回密码功能的具体代码,供大家参考,具体内容如下1、有个需求就是,忘记密码后通过邮箱找回。现在的系统在注
- Java关于Map的四种取值方式map的主要作用是什么?可以通过创建一个map的实现类 来存放 数据 值 和值的描述 也可以通过描述去取得数
- 前言:发送邮件,肯定是每个公司都会有的基本业务。很多公司都会选择把发送邮件作为一个基础服务,对外提供接口。直接调用就可发邮件了。但是我们都知
- 在Java的6.0版本中新增了concurrent包,这个包是用作线程同步的包,提供了很多工具类。其中定时器就是其中之一。近期在做一个项目,
- 一、同步调用1、同步调用会按照代码顺序来执行2、同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,
- 本文实例讲述了Android游戏开发学习②焰火绽放效果实现方法。分享给大家供大家参考。具体如下:本节介绍在游戏开发中常用到的数学物理应用——
- 前言缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少
- 介绍和使用场景1)什么是消息一个事件,需要广播或者单独传递给某个接口2)为什么使用这个配置更新了,但是其他系统不知道是否更新SpringCl
- jrebelJRebel是一套JavaEE开发工具。JRebel允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产
- 最近有由于需要,我开始接触阿里云的云市场的印刷文字识别-营业执照识别这里我加上了官网的申请说明,只要你有阿里云账号就可以用,前500次是免费
- MyBatis提供了 * 接口,我们可以实现自己的 * ,将其作为一个plugin装入到SqlSessionFactory中。 首先要说的是
- 给TextureView添加边框(专业名词为描边),有三种解决方案:1.设置一个9 patch 的,右边框,中间是空的PNG。2.自定义一个
- 1、什么是阻塞队列?队列是一种数据结构,它有两个基本操作:在队列尾部加入一个元素,从队列头部移除一个元素。阻塞队里与普通的队列的区别在于,普
- 前言最近在用 MVP + RxJava + Retrofit 写项目,觉得相对于其他的开发框架,这的确是给我们带来了很多方便,但是在网上搜寻
- 一.HashMap 和Hashtable 的区别我们先看2个类的定义 public class Hashtable exten
- 有项目需求需要绘制多个圆圈,并且使用连续的数字对其排列起来,也就是好多排的圆圈。首先看一下效果图:一排设置为8个,一共有53个的:一排设值为
- Java for循环标签跳转到指定位置大家是否见过这种for循环,在for循环前加了个标记的:outerLoop:for (; ; ) {
- 本文实例讲述了Java matches类,Pattern类及matcher类用法。分享给大家供大家参考,具体如下:Pattern类正则表达式