Web容器启动中执行某个Java类

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 的顺序进行调用的。

时间: 2024-08-01 10:42:14

Web容器启动中执行某个Java类的相关文章

spring在web容器启动时执行初始化方法

需求:在tomcat启动时开启一个定时任务. 想法:容器启动时执行方法,最容易想到的就是servlet中可以配置load-on-startup,设置一个正整数也就可以随容器一起启动. 问题:上面的方法很好,但是由于定时任务需要去操作数据库,而项目采用了spring的依赖注入来管理对象,而servlet并不受Spring的管理.若此时在servlet中注入Spring管理的对象,则会报错:javax.naming.NameNotFoundException: Name com.test.InitS

WEB容器启动——web.xml加载详解

最近在看spring的源码,关于web.xml文件在容器(Tomcat.JBOSS等)启动时加载顺序问题很混乱,通过搜集资料,得出以下的结论: 1.加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:context-param -> listener -> filter -> servlet; 容器首先会去它的配置文件web.xml读取两个节点:  <context-param&

在Web应用程序中执行计划任务(多线程)

在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案.但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用. 本文就介绍

jsp中怎么调用java类中的方法

在jsp页面中先要,引入java类 例如: <%@page import="javabean.DbConn"%><!-- 引入包中的"类" --> <!--在用到的地方,直接对类实例化--> <% DbConn  DB=new  DbConn(); %> <!--然后就可以直接调用类中的方法--> <% Connection con=DB.conn(); %> jsp中怎么调用java类中的方法

Java Web应用启动间隔执行的程序

Reference:<Java定时器timer.schedule在Web中间隔执行任务和定时><[Java]Timer和TimerTask详解> 做了一个Demo,完成如下的功能: 让Tomcat在WEB程序启动的时候启动一个线程池和一个Timer线程,Timer线程每隔一段时间跑一次(比如检查到期的用户,类似轮询查看),然后触发另一个后台线程(甩给线程池去处理,比如处理到期的用户,发送等). 直接用代码说话 StarupListener.java package Listener

spring源码:web容器启动(li)

web项目中可以集成spring的ApplicationContext进行bean的管理,这样使用起来bean更加便捷,能够利用到很多spring的特性.我们比较常用的web容器有jetty,tomcat,jboss等,以jetty为例,我们看一下web容器是如何初始化和启动spring的context. 一.Spring容器的加载 在web工程中都有一个web.xml文件,jetty在启动的时候会加载这个配置文件,并且对文件中的各个listener进行加载.ContextLoaderListe

jenkins pipeline中执行nohup java -jar ***.jar &amp; 的时候会忽略执行jar之后的命令

搜索关键词:pipeline中执行nohup时忽略执行& 问题: 在做自动化部署的时候,脚本如下: sh "ssh [email protected]'$target_ip' nohup '$java_home' -jar '$app_home'/'$env.JOB_NAME'.jar >'$app_home'/ 2>&1 &" 总是执行到.jar这里后面的指定日志输出和后台运行命令(>'$app_home'/ 2>&1 &

容器启动后执行和执行数据库脚本

1 package com.jt.mongo.demo.modules.init; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 import org.springframework.context.ApplicationListener; 6 import org.springframework.context.event.ContextRefreshedEvent; 7 import org.springfr

web容器启动,获取spring bean

/**  * 服务器启动关闭的监听器  * @version 1.0  */ public class GlobalListener implements ServletContextListener {  private static final Logger log = LoggerFactory.getLogger(GlobalListener.class);     private Timer timer = new Timer();     /**      * 关闭服务器