Web容器啟動(dòng)過(guò)程中如何執(zhí)行Java類(lèi)
1.監(jiān)聽(tīng)(Listener)
<!-- 配置監(jiān)聽(tīng) -->
<listener>
<listener-class>com.xian.jdbc.GetProperties</listener-class>
</listener>
package com.xian.jdbc;
public class GetProperties{
} //implements ServletContextListener
可實(shí)現(xiàn)servlet的監(jiān)聽(tīng)則啟動(dòng)中直接運(yùn)行輸出。不實(shí)現(xiàn)也有作用。。未知
2.spring初始化bean時(shí)
1、在需要進(jìn)行操作的bean的xml定義中加上init-method屬性,指定下啟動(dòng)時(shí)運(yùn)行哪個(gè)方法;
2、實(shí)現(xiàn)InitializingBean接口,Spring在啟動(dòng)時(shí)會(huì)自動(dòng)調(diào)用這個(gè)接口中的初始化方法
public class SysInitBean implements InitializingBean,ServletContextAware{public void afterPropertiesSet() throws Exception {//初始化代碼 }}<span style="background-color: rgb(226, 226, 226); "> </span>
實(shí)現(xiàn)InitializingBean接口就可以獲取spring的所有配置信息。
實(shí)現(xiàn)ServletContextAware,可以獲得servletcontext
3.servlet的init()方法
自動(dòng)執(zhí)行servlet
寫(xiě)一個(gè)servlet,在init()方法中寫(xiě)好想要執(zhí)行的程序,
同時(shí),在web.xml配置文件中指出
<servlet>
<servlet-name>XXXX</servlet-name>
<servlet-class>XXXX</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
load-on-startup的值必須為整數(shù),當(dāng)load-on-startup值為負(fù)整數(shù)或者未指定時(shí),容器在該servlet被調(diào)用時(shí)加載
當(dāng)其值為0和正整數(shù)時(shí),容器啟動(dòng)時(shí)加載,值越小,優(yōu)先級(jí)越高
Web.xml加載順序:
1 、啟動(dòng)一個(gè) WEB 項(xiàng)目的時(shí)候, WEB 容器會(huì)去讀取它的配置文件 web.xml ,讀取 <listener> 和 <context-param> 兩個(gè)結(jié)點(diǎn)。
2 、緊急著,容創(chuàng)建一個(gè) ServletContext ( servlet 上下文),這個(gè) web 項(xiàng)目的所有部分都將共享這個(gè)上下文。
3 、容器將 <context-param> 轉(zhuǎn)換為鍵值對(duì),并交給 servletContext 。
4 、容器創(chuàng)建 <listener> 中的類(lèi)實(shí)例,創(chuàng)建監(jiān)聽(tīng)器。
由此,可以看出, web.xml 的加載順序是: context-param -> listener -> filter -> servlet ,而同個(gè)類(lèi)型之間的實(shí)際程序調(diào)用的時(shí)候的順序是根據(jù)對(duì)應(yīng)的 mapping 的順序進(jìn)行調(diào)用的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決Eclipse找不到或無(wú)法加載主類(lèi)問(wèn)題
這篇文章主要介紹了如何解決Eclipse找不到或無(wú)法加載主類(lèi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Java實(shí)現(xiàn)多數(shù)據(jù)源的幾種方式總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于Java實(shí)現(xiàn)多數(shù)據(jù)源的幾種方式,最近項(xiàng)目中的工作流需要查詢(xún)多個(gè)數(shù)據(jù)源的數(shù)據(jù),數(shù)據(jù)源可能是不同種類(lèi)的,需要的朋友可以參考下2023-08-08淺談什么是SpringBoot異常處理自動(dòng)配置的原理
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著SpringBoot異常處理自動(dòng)配置展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06Java date format時(shí)間格式化操作示例
這篇文章主要介紹了Java date format時(shí)間格式化操作,結(jié)合具體實(shí)例形式分析了java針對(duì)日期時(shí)間進(jìn)行格式化操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03jdbc連接數(shù)據(jù)庫(kù)實(shí)例詳解
在本篇內(nèi)容里小編給大家分享了關(guān)于jdbc如何連接數(shù)據(jù)庫(kù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-02-02當(dāng)事務(wù)Transactional遇見(jiàn)異步線程出現(xiàn)的坑及解決
這篇文章主要介紹了當(dāng)事務(wù)Transactional遇見(jiàn)異步線程出現(xiàn)的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12cascade級(jí)聯(lián)關(guān)系操作案例詳解
這篇文章主要介紹了cascade級(jí)聯(lián)關(guān)系,主要包括級(jí)聯(lián)保存,級(jí)聯(lián)修改,級(jí)聯(lián)刪除案例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07