摘要:是結(jié)構(gòu)在框架中的一種表現(xiàn)形式。這句話(huà)聽(tīng)起來(lái)有點(diǎn)繞,我們可以看一下下面這張圖,大家可以吧容器中的理解為全局變量,吧容器中的理解為局部變量。在方法體中可以訪(fǎng)問(wèn)局部變量和全局變量,但是在方法外,就只能訪(fǎng)問(wèn)全局變量,是不能訪(fǎng)問(wèn)局部變量的。
聊完了Spring,我們來(lái)看看Spring在web方面的應(yīng)用Spring MVC。MVC
首先我們來(lái)看什么是mvc?
大家知道在jsp里面也是可以寫(xiě)java代碼的,但是如果我們這樣做就會(huì)有一個(gè)問(wèn)題,就是代碼全部都雜糅在一起,無(wú)論是閱讀還是修改都將變得十分的困難。
MVC是模型(model)-視圖(view)-控制器(controller)的縮寫(xiě),他將我們的程序分為個(gè)三部分,頁(yè)面、控制層、模型層。這樣使我們的程序的邏輯更清晰,更容易維護(hù)。
它以將我們的業(yè)務(wù)邏輯、數(shù)據(jù)與界面顯示分離,將眾多的業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在需要改進(jìn)和個(gè)性化定制界面及用戶(hù)交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯,提高編碼效率。
Spring MVCSpring MVC 是MVC結(jié)構(gòu)在Spring框架中的一種表現(xiàn)形式。下面我們來(lái)看一下Spring MVC的結(jié)構(gòu):
由圖可知,Spring MVC的具體流程如下:
1.?首先用戶(hù)發(fā)送請(qǐng)求————>前端控制器(DispatcherServlet),前端控制器根據(jù)請(qǐng)求信息(如URL)來(lái)決定選擇哪一個(gè)頁(yè)面控制器進(jìn)行處理并把請(qǐng)求委托給它,即以前的控制器的控制邏輯部分;
2.?頁(yè)面控制器接收到請(qǐng)求后,進(jìn)行功能處理,首先需要收集和綁定請(qǐng)求參數(shù)到一個(gè)對(duì)象,并進(jìn)行驗(yàn)證。然后將命令對(duì)象委托給業(yè)務(wù)對(duì)象進(jìn)行處理;處理完畢后返回一個(gè)ModelAndView(模型數(shù)據(jù)和邏輯視圖名);
3.?前端控制器收回控制權(quán),然后根據(jù)返回的邏輯視圖名,選擇相應(yīng)的視圖進(jìn)行渲染(ViewResolver),并把模型數(shù)據(jù)傳入以便視圖渲染。
4.?前端控制器再次收回控制權(quán),將響應(yīng)返回給用戶(hù);
大家可以把這想象成自己去醫(yī)院看病的流程,前端控制器(DispatcherServlet)在這里就相當(dāng)于一個(gè)醫(yī)院前臺(tái)的作用,我們看病時(shí)首先需要先到前臺(tái)掛號(hào),然后根據(jù)病情被分配到不同的科室,看完病之后還要再到前臺(tái)去付錢(qián)拿藥。
Spring和Spring MVC容器之間的關(guān)系我們理解了Spring和Spring MVC,這里我們討論一下Spring容器和Spring MVC容器之間的關(guān)系?
首先要說(shuō)明的是:一個(gè)項(xiàng)目中,容器不一定只有一個(gè)。
Spring容器用于管理Spring中的Bean,而Spring MVC容器用于管理Spring MVC中的Bean。Spring是父容器,Spring MVC是其子容器。并且在Spring MVC子容器中注冊(cè)的Bean可以引用Spring父容器中注冊(cè)的Bean,但在Spring容器中注冊(cè)的Bean卻不能引用Spring MVC容器中注冊(cè)的Bean。
這句話(huà)聽(tīng)起來(lái)有點(diǎn)繞,我們可以看一下下面這張圖,大家可以吧spring容器中的bean理解為全局變量,吧spring MVC容器中的bean理解為局部變量。在方法體中可以訪(fǎng)問(wèn)局部變量和全局變量,但是在方法外,就只能訪(fǎng)問(wèn)全局變量,是不能訪(fǎng)問(wèn)局部變量的。
這里我們要區(qū)分一下哪些bean是需要被SpringMVC管理的,最主要就是控制器(Controller),因?yàn)樗枰c前端控制器交互。其他的可以都交給spring的容器管理。
下一節(jié)我們來(lái)聊聊,Spring的進(jìn)階版Spring Boot。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/68180.html
摘要:模塊負(fù)責(zé)的所有面向切面的功能。總結(jié)的統(tǒng)一管理,降低了對(duì)象之間的耦合對(duì)主流的框架提供了很好的集成支持提供眾多組件,事務(wù)管理,等具有高度可開(kāi)放性,開(kāi)發(fā)者可以自由選擇部分或全部主要使用工廠(chǎng)模式和代理模式。 聊完了Spring框架中最重要的兩種設(shè)計(jì)模式,我們來(lái)看一下Spring框架的模塊和結(jié)構(gòu)圖。 Spring框架的結(jié)構(gòu) 下圖是Spring官方給出的Spring框架的結(jié)構(gòu)圖。 showImg(...
摘要:通過(guò)我們可以更輕松地入門(mén),更簡(jiǎn)單的使用的框架。團(tuán)隊(duì)為了擺脫框架中各類(lèi)繁復(fù)紛雜的配置,使用約定優(yōu)于配置的思想,在基礎(chǔ)上整合了大量常用的第三方庫(kù)的開(kāi)發(fā)框架。這里還要說(shuō)的一點(diǎn),的出現(xiàn)并不是單純的為了簡(jiǎn)化開(kāi)發(fā),更是為做鋪墊。 說(shuō)完了Spring 我們來(lái)聊聊Spring的進(jìn)階版Spring Boot,如果你還不知道Spring Boot,那希望這篇文章能夠?yàn)槟阒该鞣较颉?Spring Boot ...
摘要:系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。傳統(tǒng)架構(gòu)升級(jí)困難。新的輕量級(jí)協(xié)議容器化的出現(xiàn)。熔斷處理在微服務(wù)出現(xiàn)問(wèn)題時(shí)防止出現(xiàn)雪崩效應(yīng)。 聊完Spring Boot,我們來(lái)看看Spring Boot最重要的一方面的應(yīng)用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我們先聊聊微服務(wù)。 ...
摘要:聊完了工廠(chǎng)模式,下面我們來(lái)說(shuō)框架中的另一個(gè)核心設(shè)計(jì)模式代理模式。這里的外賣(mài)小哥就相當(dāng)于是我們的代理。主要分為代理和代理。 聊完了工廠(chǎng)模式,下面我們來(lái)說(shuō)Spring框架中的另一個(gè)核心設(shè)計(jì)模式——代理模式(Proxy Pattern)。 代理模式 大家可以先不用看概念,先舉個(gè)吃飯的例子:比如說(shuō)我們想吃飯,我們可以選擇自己做飯吃、去飯店吃、叫外賣(mài)吃。如果我們選擇自己做著吃,我們就需要去買(mǎi)菜、...
摘要:相對(duì)于工廠(chǎng)模式,抽象工廠(chǎng)模式生產(chǎn)的對(duì)象更加具體,也更加豐富,但相對(duì)編碼也更加復(fù)雜。具體的抽象工廠(chǎng)模式的實(shí)現(xiàn)大家可以參考菜鳥(niǎo)教程。知道了工廠(chǎng)模式和抽象工廠(chǎng)模式的區(qū)別,請(qǐng)大家使用的時(shí)候應(yīng)該根據(jù)具體的情況進(jìn)行選擇。 大家好,今天給大家分享一些Spring的學(xué)習(xí)心得,在講Spring之前,先和大家分享Spring中核心的設(shè)計(jì)模式。 工廠(chǎng)模式 在聊概念之前我先問(wèn)問(wèn)大家:什么是工廠(chǎng)? 這個(gè)很簡(jiǎn)單,...
閱讀 1470·2021-09-30 09:57
閱讀 1476·2021-09-09 09:33
閱讀 2240·2021-09-04 16:40
閱讀 1805·2021-09-01 10:50
閱讀 3252·2021-09-01 10:31
閱讀 2549·2019-08-30 15:56
閱讀 2979·2019-08-30 15:44
閱讀 3482·2019-08-29 17:29