问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java Web 启动时自动执行代码的几种方式

发布网友 发布时间:2022-04-21 00:06

我来回答

2个回答

热心网友 时间:2023-09-23 18:56

Web容器启动后执行代码的几种方式
其执行顺序为:

4===>5===>1===>2===>3
即指定init-method的Bean开始执行
接着实现spring的Bean后置处理器开始执行
然后是Servlet的*执行
再接下来是Servlet的过滤器执行
最后才是Servlet执行

1、实现Servlet*接口ServletContextListener

[java] view plain copy
public class InitListener implements ServletContextListener {

@Override
public void contextDestroyed(ServletContextEvent context) {

}

@Override
public void contextInitialized(ServletContextEvent context) {
// 上下文初始化执行
System.out.println("================>[ServletContextListener]自动加载启动开始.");
SpringUtil.getInstance().setContext(
<span style="white-space:pre"> </span>WebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext())
<span style="white-space:pre"> </span>);
}

}
然后在web.xml文件配置该*

[html] view plain copy
<listener>
<listener-class>com.test.init.InitListener</listener-class>
</listener>

2、实现Servlet的过滤器Filter

[html] view plain copy
public class InitFilter implements Filter {

@Override
public void destroy() {

}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {

}

@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("================>[Filter]自动加载启动开始.");
// 读取Spring容器中的Bean[此时Bean已加载,可以使用]
//写启动需要执行的代码
System.out.println("================>[Filter]自动加载启动结束.");
}

}
然后在web.xml文件配置过滤器即可

[html] view plain copy
<filter>
<filter-name>InitFilter</filter-name>
<filter-class>com.test.init.InitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InitFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>

3、编写一个Servlet,在web.xml里面配置容器启动后执行即可

[html] view plain copy
public class InitServlet extends HttpServlet {

/**
*/
private static final long serialVersionUID = 1L;

@Override
public void init(ServletConfig config) {
try {
super.init();
} catch (ServletException e) {
e.printStackTrace();
}
System.out.println("================>[Servlet]自动加载启动开始.");
// 读取Spring容器中的Bean[此时Bean已加载,可以使用]
//执行想要的代码
System.out.println("================>[Servlet]自动加载启动结束.");
}
}

然后在web.xml文件配置该Servlet的启动方式为:容器启动后执行
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.test.init.InitServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>test</param-value>
</init-param>
<!-- 此处指定加载顺序为2,表明还有优先级更高的Servlet要先执行 -->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
关于启动后执行,由load-on-startup指定:
(1)当值为0或者大于0时,表示容器在应用启动时就加载这个servlet。值越小,启动优先级越高;
(2)当是一个负数时或者没有指定时,表示该servlet被调用时才加载。

4、如果你使用Spring IOC作为Bean管理容器,那么可以指定init-method其中init-method表示bean加载成功后,立即执行某个方法。配置如下:start为要执行的方法名称

[html] view plain copy
<!-- service -->
<bean id="shopService" class="com.test.teach.service.ShopService" <span style="color:#33ffff;">init-method="start"</span>>
<property name="shopDao" ref="shopDao" />
</bean>

热心网友 时间:2023-09-23 18:56

1 *, 监听servletContext,这也是spring的启动方式
2 servlet配置<load-on-startup>0</load-on-startup> 表示在web启动时直接实例化,那么我们就可以在init()中写想要运行的代码
3 依赖于spring的定时任务,配置每秒运行,近似的等于启动时运行
4 各种加载方法,初始化方法,写在必然会加载class的地方:

(1)static{} 静态代码块,会在class文件加载时运行,写在controller层或servece层或某个 @Component

(2)构造方法,写在controller层
(3)@PostConstruct 类似构造方法,sping用这个注解来处理注入前初始化参数

(4)servlet的配置注解@WebServlet spring的配置注解@Configuration

等等
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
奥迪a6l怎么用手机连接音响放歌,我的是华为 奥迪a6l蓝牙连接了,听歌没声音 2009年6月在农业银行办理30万等额本息为10年的商业房贷,7折,现在月供... 存量房贷七折七折政策 ...在农业银行贷款27万,等额本息打七折利率按揭20年,现在的利率每月应还... 我是第一套房,在农业银行不是公积金贷款27万元20年付清利息怎么算法... 在成都交通违章网上怎么办理的 成都违章罚款网上怎么交 成都交通违章罚款在哪里交 成都违章停车可以网上交罚款吗 eclipse导入web项目怎么操作 怎么在web中执行java程序 如何启动一个Java Web应用 JavaWeb做的网站项目怎么运行 如何运行一个javaweb程序 网上下的javaweb怎么运行 java web打包好后怎么运行 有一个现成的Java web,该怎么运行 java程序怎么在Web服务器里运行. java web程序如何运行 买彩票可以赚钱吗 买彩票能赚钱吗? 彩神彩票每天赚钱是真的吗 彩票赚钱在哪个平台上投资比较可靠 短期内会有收益吗 404 Not Found 买彩票能挣钱吗? 双色球那些网上预测要交钱的是不是骗人的? 利用大数据彩票来进行赚钱,这可靠吗? 请问福利彩票是骗人的吗? 404 Not Found 如何在不同环境中运行Java Web项目。 拿到拼音是什么 javaweb程序怎么在myeclipse运行 求教在javaweb项目中,java程序A.java没有打包 javaWeb项目移动到另外的机器怎么运行? java web代码文件怎么运行 怎么用MyEclipse打开一个Java Web工程 webservice怎样运行 java 手机左上角有个圆圈里有个感叹号 酷狗PC版是什么意思? 酷狗里的酷狗PC是什么意思? PC酷狗是什么 最新版本的酷狗音乐里的[PC的酷狗]是干嘛用的 酷狗a的pc播放是什么意思 酷狗音乐下载PC版Iphone版和Android版的区别 酷狗音乐电脑版为什么不能登录 酷狗概念版pc端有么 PC端的酷狗软件怎么开发的? 电脑版的酷狗音乐有几个版本 为什么酷狗PC版可以单曲播放手机怎么就不可以啊