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