欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC五大組件與執(zhí)行原理分析總結(jié)

 更新時(shí)間:2023年01月12日 15:20:27   作者:百思不得小趙  
這篇文章主要介紹了SpringMVC五大組件與執(zhí)行原理分析總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

Spring MVC是包含在spring中的一個(gè)基于MVC設(shè)計(jì)思想的Web應(yīng)用程序框架,目的是簡化開發(fā)工作,提高開發(fā)效率。

優(yōu)點(diǎn)

  • 和Spring框架無縫集成,能直接使用Spring的IoC容器、AOP支持;
  • 提供了多種將請(qǐng)求URL映射到控制器的機(jī)制;并支持參數(shù)的類型轉(zhuǎn)換,自動(dòng)裝載,校驗(yàn)等功能;
  • 具有強(qiáng)大的擴(kuò)展性,可根據(jù)需要方便的擴(kuò)展框架的功能。

SpringMVC 五大組件

  • DispatcherServlet 負(fù)責(zé)分發(fā)請(qǐng)求(前端(核心)控制器)
  • HandlerMapping 負(fù)責(zé)根據(jù)請(qǐng)求 找到對(duì)應(yīng)的控制器(處理器映射器)
  • Controller 處理請(qǐng)求的控制器
  • ModelAndView 封裝數(shù)據(jù)信息以及視圖信息
  • ViewResolver 通過處理找到對(duì)應(yīng)的頁面(視圖解析器)

1、DispatcherServlet(前端(核心)控制器)

DispatcherServlet 是SpringMVC 最核心的一個(gè)控件。它是前端核心控制器,在web.xml中進(jìn)行相關(guān)的配置。它可以將發(fā)送過來的請(qǐng)求進(jìn)行匹配操作,再進(jìn)行攔截。將攔截下來的所有請(qǐng)求根據(jù)對(duì)應(yīng)的規(guī)則發(fā)送到對(duì)應(yīng)的Controller進(jìn)行處理。它是前端控制器設(shè)計(jì)模式的實(shí)現(xiàn),能夠提供Spring Web MVC的集中節(jié)點(diǎn),而且負(fù)責(zé)職責(zé)的分派,而且與Spring IoC容器無縫集成。

配置DispatcherServlet :

<!-- 配置前端控制器,配置Servlet -->
<servlet>
     <servlet-name>springMvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
          <param-name>contextConfigLocation</param-name>
           <param-value>classpath:springmvc.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
</servlet>
<!--配置請(qǐng)求路徑-->
<servlet-mapping>
    <servlet-name>springMvc</servlet-name>
    <url-pattern>*.form</url-pattern>
</servlet-mapping>

DispatcherServlet配置在web.xml文件中。init-param為Servlet啟動(dòng)所需參數(shù)。DispatcherServlet會(huì)讀取初始shucontextConfigLocation參數(shù)里面的值從而獲取springmvc的配置位置自啟動(dòng)容器

2、HandlerMapping(處理器映射器)

HandlerMapping 是處理器映射,它的關(guān)鍵作用是將請(qǐng)求進(jìn)行派發(fā),負(fù)責(zé)請(qǐng)將求與控制器建立互相對(duì)應(yīng)的關(guān)系。它最終由 DispatcherServlet 調(diào)用,DispatcherServlet 會(huì)從容器中取出所有 HandlerMapping 實(shí)例并遍歷,讓 HandlerMapping 實(shí)例根據(jù)自己實(shí)現(xiàn)類的方式去嘗試查找 Handler。它標(biāo)明了路徑與Controller的對(duì)應(yīng)關(guān)系,不同的路徑訪問不同的Controller

配置HandlerMapping :

<!--開啟mvc注解掃描-->
<mvc:annotation-driven/>
<!--創(chuàng)建Controller  bean-->
<bean id="helloController" class="包名+類名"/>
<bean class="org.springframework.web.servlrt.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/hello">helloController</prop>
        </props>
    </property>
</bean>

3、Controller(處理請(qǐng)求的控制器)

處理請(qǐng)求的控制器,負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,把用戶請(qǐng)求的數(shù)據(jù)發(fā)送到業(yè)務(wù)處理層處理之后封裝成一個(gè)Model ,然后把該Model 返回給對(duì)應(yīng)的View 進(jìn)行展示。它實(shí)際上就是用來處理業(yè)務(wù)邏輯的Java類。

配置Controller類 :

@Controller
public class DataController {
    @RequestMapping("getData")
    public ModeAndView hello(String Id) {
        System.out.println("hello");
        return new ModeAndView("hello")
    }
}

4、ModelAndView(封裝數(shù)據(jù)和視圖信息)

ModelAndView 是進(jìn)行封裝數(shù)據(jù)信息和視圖信息的模型。使用ModelAndView類用來存儲(chǔ)處理完后的結(jié)果數(shù)據(jù)。ModelAndView中的Model代表模型,View代表視圖,很好地解釋了該類的作用。業(yè)務(wù)處理器調(diào)用模型層處理完用戶請(qǐng)求后,把結(jié)果數(shù)據(jù)存儲(chǔ)在該類的model屬性中,把要返回的視圖信息存儲(chǔ)在該類的view屬性中,然后返回給SpringMVC框架??蚣芡ㄟ^調(diào)用配置文件中定義的視圖解析器,對(duì)該對(duì)象進(jìn)行解析,最后把結(jié)果數(shù)據(jù)顯示在指定的頁面上。

5、ViewResolver(視圖解析器)

視圖解析器ViewResolver 的主要作用是把一個(gè)邏輯上的視圖名稱解析為一個(gè)視圖。

配置ViewResolver :

<!-- 配置視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResour    ceViewResolver">
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=".html"></property>
</bean>

SpringMVC執(zhí)行原理

  • 發(fā)起請(qǐng)求到前端控制器DispatcherServlet
  • 前端控制器調(diào)用處理器映射器HandlerMapping查找Handler
  • 處理器映射器向前端控制器返回找到的Handler
  • 前端控制器調(diào)用處理器適配器HandlerAdapter執(zhí)行Handler
  • 處理器適配器去執(zhí)行Handler
  • Handler執(zhí)行完成給處理器適配器返回ModelAndView
  • 處理器適配器向前端控制器返回ModelAndView
  • 前端控制器請(qǐng)求視圖解析器ViewResolver去進(jìn)行視圖解析
  • 視圖解析器向前端控制器返回視圖View
  • 前端控制器進(jìn)行視圖渲染向用戶響應(yīng)結(jié)果

總結(jié)

DispatcherServlet(前端控制器)接收來自客戶端的URL請(qǐng)求。請(qǐng)求分發(fā)器借助處理器映射器(HandlerMapping)來查找對(duì)應(yīng)的處理器Handler(控制器),分發(fā)本次請(qǐng)求。請(qǐng)求分發(fā)器利用處理器適配器(HandlerAdapter)來執(zhí)行對(duì)應(yīng)的處理器(控制器)。處理器調(diào)用方法處理本次請(qǐng)求,返回模型視圖對(duì)象(ModelAndView)。請(qǐng)求分發(fā)器借助視圖解析器(ViewResolver)解析模型視圖,得到對(duì)應(yīng)的視圖(View)。請(qǐng)求分發(fā)器調(diào)用視圖中的方法,同時(shí)將數(shù)據(jù)模型交給視圖對(duì)象,完成給客戶端的應(yīng)答。

到此這篇關(guān)于SpringMVC五大組件與執(zhí)行原理分析總結(jié)的文章就介紹到這了,更多相關(guān)SpringMVC五大組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用JSONObject需要的6個(gè)jar包下載地址

    Java使用JSONObject需要的6個(gè)jar包下載地址

    這篇文章主要介紹了Java使用JSONObject需要的6個(gè)jar包下載地址,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mybatis插入Oracle數(shù)據(jù)庫日期型數(shù)據(jù)過程解析

    Mybatis插入Oracle數(shù)據(jù)庫日期型數(shù)據(jù)過程解析

    這篇文章主要介紹了Mybatis插入Oracle數(shù)據(jù)庫日期型數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 深入了解Java方法的重載與重寫

    深入了解Java方法的重載與重寫

    在最初學(xué)習(xí)java的時(shí)候,人們都知道,java這種面向?qū)ο蟮恼Z言,一共有三大特征,分別是:封裝、繼承、多態(tài)。多態(tài)的實(shí)現(xiàn)途徑有三種:重寫、重載、接口實(shí)現(xiàn)。本文就來為大家詳細(xì)講講Java方法的重載與重寫
    2022-07-07
  • Java NIO.2 使用Path接口來監(jiān)聽文件、文件夾變化

    Java NIO.2 使用Path接口來監(jiān)聽文件、文件夾變化

    Java7對(duì)NIO進(jìn)行了大的改進(jìn),新增了許多功能,接下來通過本文給大家介紹Java NIO.2 使用Path接口來監(jiān)聽文件、文件夾變化 ,需要的朋友可以參考下
    2019-05-05
  • 在springboot3微項(xiàng)目中如何用idea批量創(chuàng)建單元測試邏輯

    在springboot3微項(xiàng)目中如何用idea批量創(chuàng)建單元測試邏輯

    這篇文章主要介紹了在SpringBoot3項(xiàng)目中使用IntelliJIDEA批量創(chuàng)建單元測試包括準(zhǔn)備工作(確保項(xiàng)目配置正確,添加測試依賴),使用IntelliJIDEA創(chuàng)建測試,感興趣的朋友一起看看吧
    2024-10-10
  • String?concat(String?str)使用小結(jié)

    String?concat(String?str)使用小結(jié)

    這篇文章主要介紹了String?concat(String?str)使用小結(jié),在了解concat()之前,首先需要明確的是String的兩點(diǎn)特殊性,一是長度不可變二是值不可變,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • SpringBoot中使用監(jiān)聽器的方法詳解

    SpringBoot中使用監(jiān)聽器的方法詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中使用監(jiān)聽器的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • IDEA 自動(dòng)跳出括號(hào)的快捷鍵分享

    IDEA 自動(dòng)跳出括號(hào)的快捷鍵分享

    這篇文章主要介紹了IDEA 自動(dòng)跳出括號(hào)的快捷鍵分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽器之匿名內(nèi)部類)

    java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽器之匿名內(nèi)部類)

    這篇文章主要介紹了java-RGB調(diào)色面板的實(shí)現(xiàn)(事件監(jiān)聽器之匿名內(nèi)部類),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解spring boot jpa整合QueryDSL來簡化復(fù)雜操作

    詳解spring boot jpa整合QueryDSL來簡化復(fù)雜操作

    這篇文章主要介紹了詳解spring boot jpa整合QueryDSL來簡化復(fù)雜操作,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論