最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Spring框架入門必備教程-Spring與Web

2021-03-17 16:29 作者:動力節(jié)點小王本王  | 我要投稿



Spring?與 Web

Web?項目中使用 Spring?框架,首先要解決在web?層(這里指Servlet)中獲取到 Spring?容器的問題。只要在web?層獲取到了 Spring?容器,便可從容器中獲取到 Service?對象。

Web?項目使用 Spring?的問題

舉例:springWeb?項目spring-mybatis?基礎(chǔ)上修改

Step1:新建一個?Maven?Project?

maven-archetype-webapp?

Step2: 復制代碼,配置文件,jar

spring-mybatis?項目中以下內(nèi)容復制到當前項目中:

(1)?Service?層、Dao?層全部代碼

(2)?配置文件applicationContext.xml?及 jdbc.properties,mybatis.xml

(3)?pom.xml

(4)?加入servlet?,jsp?依賴

在之前原有的pom.xml 文件中再加入以下的內(nèi)容:

Step3:定義 index 頁面

Step4:定義 RegisterServlet(重點代碼)

Step5:定義 success 頁面

Step6:web.xml 注冊Servlet

Step7:運行結(jié)果分析

當表單提交,跳轉(zhuǎn)到success.jsp 后,多刷新幾次頁面,查看后臺輸出,發(fā)現(xiàn)每刷新一次頁面,就new 出一個新的 Spring 容器。即,每提交一次請求, 就會創(chuàng)建一個新的 Spring 容器。對于一個應用來說,只需要一個 Spring 容器即可。所以,將 Spring 容器的創(chuàng)建語句放在Servlet 的doGet()或doPost()方法中是有問題的。

此時,可以考慮,將 Spring?容器的創(chuàng)建放在Servlet?進行初始化時進行, 即執(zhí)行init()方法時執(zhí)行。并且,Servlet?還是單例多線程的,即一個業(yè)務(wù)只有一個 Servlet?實例,所有執(zhí)行該業(yè)務(wù)的用戶執(zhí)行的都是這一個 Servlet?實例。這樣,Spring?容器就具有了唯一性了。

但是,Servlet 是一個業(yè)務(wù)一個 Servlet 實例,即LoginServlet 只有一個, 但還會有StudentServlet、TeacherServlet 等。每個業(yè)務(wù)都會有一個Servlet,都會執(zhí)行自己的 init()方法,也就都會創(chuàng)建一個 Spring 容器了。這樣一來,Spring 容器就又不唯一了。

使用 Spring?的監(jiān)聽器 ContextLoaderListener(掌握)

舉例:springweb-2?項目spring-web?項目基礎(chǔ)上修改

對于Web 應用來說,ServletContext 對象是唯一的,一個Web 應用,只有一個 ServletContext 對象,該對象是在Web 應用裝載時初始化的。若將Spring 容器的創(chuàng)建時機,放在 ServletContext 初始化時,就可以保證 Spring 容器的創(chuàng)建只會執(zhí)行一次,也就保證了 Spring 容器在整個應用中的唯一性。

Spring?容器創(chuàng)建好后,在整個應用的生命周期過程中,Spring?容器應該是隨時可以被訪問的。即,Spring 容器應具有全局性。而放入ServletContext?對象的屬性,就具有應用的全局性。所以,將創(chuàng)建好的Spring?容器,以屬性的形式放入到 ServletContext?的空間中,就保證了Spring?容器的全局性。

上述的這些工作,已經(jīng)被封裝在了如下的 Spring?的Jar?包的相關(guān)API?中: spring-web-5.2.5.RELEASE

Step1:maven?依賴 pom.xml

Step2:注冊監(jiān)聽器 ContextLoaderListener

若要在 ServletContext 初始化時創(chuàng)建 Spring 容器,就需要使用監(jiān)聽器接口 ServletContextListener 對 ServletContext 進行監(jiān)聽。在web.xml 中注冊該監(jiān)聽器。

Spring 為該監(jiān)聽器接口定義了一個實現(xiàn)類ContextLoaderListener,完成了兩個很重要的工作:創(chuàng)建容器對象,并將容器對象放入到了 ServletContext 的空間中。

打開ContextLoaderListener 的源碼。看到一共四個方法,兩個是構(gòu)造方法,一個初始化方法,一個銷毀方法。

所以,在這四個方法中較重要的方法應該就是 contextInitialized(), context 初始化方法。

跟蹤initWebApplicationContext()方法,可以看到,在其中創(chuàng)建了容器對象。

并且,將創(chuàng)建好的容器對象放入到了 ServletContext 的空間中,key 為一個 常 量 : WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUT E。

Step3:指定 Spring 配置文件的位置<context-param>

ContextLoaderListener?在對 Spring?容器進行創(chuàng)建時,需要加載 Spring 配 置 文 件 。 其 默 認 的 Spring 配 置 文 件 位 置 與 名 稱 為 :WEB- INF/applicationContext.xml。但,一般會將該配置文件放置于項目的classpath?下,即src?下,所以需要在web.xml?中對 Spring?配置文件的位置及名稱進行指定。

從監(jiān)聽器ContextLoaderListener 的父類ContextLoader 的源碼中可以看到其要讀取的配置文件位置參數(shù)名稱 contextConfigLocation。

Step4:獲取 Spring 容器對象

在 Servlet 中獲取容器對象的常用方式有兩種:

(1)?直接從 ServletContext?中獲取

從對監(jiān)聽器ContextLoaderListener 的源碼分析可知,容器對象在ServletContext 的中存放的key 為WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUT E。所以,可以直接通過 ServletContext 的getAttribute()方法,按照指定的key 將容器對象獲取到。

(2)?通過 WebApplicationContextUtils?獲取

工具類WebApplicationContextUtils 有一個方法專門用于從ServletContext 中 獲 取 Spring 容 器 對 象 : getRequiredWebApplicationContext(ServletContext sc)

調(diào)用Spring 提供的方法獲取容器對象:

查其源碼,看其調(diào)用關(guān)系,就可看到其是從 ServletContext 中讀取的屬性值,即 Spring 容器。

以上兩種方式,無論使用哪種獲取容器對象,刷新success 頁面后,可看到代碼中使用的 Spring 容器均為同一個對象。

最后奉上視頻教程??,視頻觀看效果更佳??!走過路過別忘素質(zhì)三連哦~~




Spring框架入門必備教程-Spring與Web的評論 (共 條)

分享到微博請遵守國家法律
东山县| 衡南县| 建平县| 皋兰县| 永胜县| 宁海县| 绥滨县| 巴彦淖尔市| 姚安县| 锦州市| 稷山县| 中宁县| 阜宁县| 明水县| 岳普湖县| 庆阳市| 托克逊县| 绥化市| 花莲市| 鲁山县| 青冈县| 绥芬河市| 克拉玛依市| 双鸭山市| 方正县| 白河县| 金坛市| 太仆寺旗| 象州县| 珠海市| 屯留县| 荆门市| 绥滨县| 财经| 阳信县| 岳阳县| 永川市| 哈密市| 革吉县| 资溪县| 冕宁县|