最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMvc框架的簡介與執(zhí)行流程詳解

 更新時間:2021年06月18日 15:44:45   作者:知了一笑  
MVC是一種軟件設(shè)計典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個組件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯,MVC分層有助于管理和架構(gòu)復(fù)雜的應(yīng)用程序

一、SpringMvc框架簡介

1、Mvc設(shè)計理念

  • M:代表模型Model

模型就是數(shù)據(jù),應(yīng)用程序的核心。

  • V:代表視圖View

回顯數(shù)據(jù)的界面,例如JSP就是用來展示模型中的數(shù)據(jù)。

  • C:代表控制器Controller

控制器的作用就是根據(jù)入?yún)?,把不同的響?yīng)數(shù)據(jù)(Model),顯示在不同的視圖(View)上。

2、SpringMvc簡介

  • 框架描述

SpringMVC是一種基于Java實現(xiàn)的MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架,出自Spring框架全家桶,與Spring框架無縫整合,使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦。

  • 框架優(yōu)點

結(jié)構(gòu)松散,幾乎可以在SpringMVC中使用各類視圖,各個模塊分離而且耦合度非常低,且易于擴展。與Spring無縫集成,且簡單,靈活,容易上手。

二、SpringMvc執(zhí)行流程

1、流程圖解

2、步驟描述

(1)、發(fā)起請求到前端控制器DispatcherServlet;

(2)、前端控制器請求HandlerMapping查找,Handler可以根據(jù)xml配置、注解進(jìn)行查找;

(3)、處理器映射器HandlerMapping向前端控制器返回Handler;

(4)、前端控制器調(diào)用處理器適配器去執(zhí)行Handler;

(5)、處理器適配器去執(zhí)行Handler ;

(6)、Handler執(zhí)行完成給適配器返回ModelAndView ;

(7)、處理器適配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一個底層對象,包括Model和view;

(8)、前端控制器請求視圖解析器去進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖 ;

(9)、視圖解析器向前端控制器返回View ;

(10)、前端控制器進(jìn)行視圖渲染,視圖渲染將模型數(shù)據(jù)(在ModelAndView對象中)填充到request域中;

(11)、前端控制器向用戶響應(yīng)結(jié)果 ;

3、核心組件

  • 前端控制器

DispatcherServlet:請求離開瀏覽器后,最先到達(dá)的就是DispatcherServlet,是整個流程控制的中心,作用接收請求,響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,中央處理器。減少各個組件之間的耦合度。

  • 處理器映射器

HandlerMapping:根據(jù)請求的url路由到指定接口,用戶請求找到Handler處理器,springmvc提供不同類型映射器,例如:Xml配置方式,注解方式等。

  • 處理器適配器

HandlerAdapter:按照特定規(guī)則去執(zhí)行Handler,SpringMvc支持多種處理器,各種處理器中的處理方法各不相同,為了解決適應(yīng)多種處理器,就出現(xiàn)了處理器適配器。

  • 處理器

Handler:處理用戶請求,涉及具體業(yè)務(wù)邏輯,需要程序員根據(jù)業(yè)務(wù)需求開發(fā)。編寫Handler時按照HandlerAdapter的規(guī)則開發(fā),這樣適配器才可以正確執(zhí)行Handler。

  • 視圖解析器

ViewResolver:負(fù)責(zé)將請求的響應(yīng)結(jié)果生成View,根據(jù)邏輯視圖名解析成物理視圖名,就是具體頁面地址,生成View視圖對象,對View進(jìn)行渲染,通過頁面展示給用戶。

  • 視圖

View:SpringMvc框架提供很多的View視圖類型的支持,包括:jsp、freemarker、pdf等。通過頁面標(biāo)簽或頁面模版解析模型數(shù)據(jù)回顯到頁面,需要根據(jù)業(yè)務(wù)開發(fā)具體頁面。

三、整合Spring框架配置

1、spring-mvc配置

<!-- 掃描文件 -->
<context:component-scan base-package="com.spring.mvc.controller" />
<!-- MVC默認(rèn)的注解映射的方式 -->
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<!-- 視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>

2、Web.xml配置

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

3、測試接口

@Controller
public class HelloController {
    @RequestMapping("/getInfo")
    public @ResponseBody String getInfo (String name){
        return name ;
    }
}

4、常用注解說明

  • @Controller

標(biāo)記一個類是Handler,也就是開發(fā)的Controller,然后使用@RequestMapping或其他相關(guān)注解(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping),用來關(guān)聯(lián)請求和Controller方法之間的映射關(guān)系,這樣的Controller 就可以被請求訪問。

  • @RequestMapping

處理請求地址映射的注解,可作用于類或方法上。用于類上,表示類中的所有響應(yīng)請求的方法都是以類上標(biāo)注地址作為父路徑。

  • @requestParam

主要用于在SpringMvc框架的控制層獲取參數(shù),三個常用參數(shù):defaultValue表示設(shè)置默認(rèn)值,required 通過boolean設(shè)置是否是必須要傳入的參數(shù),value值表示傳入的參數(shù)名稱。

  • @RequestBody

接收請求體中傳遞給后端的Json字符串?dāng)?shù)據(jù)的,GET方式無請求體,所以使用@RequestBody接收數(shù)據(jù)時,不能使用GET方式提交數(shù)據(jù),需要用POST方式進(jìn)行提交。

  • @ResponseBody

該注解用于方法的返回對象,可以通過配置轉(zhuǎn)換器為指定數(shù)據(jù)響應(yīng)格式,如果希望返回的數(shù)據(jù)不是View試圖頁面,而是指定數(shù)據(jù)格式的時候使用,例如:Json、Xml等。

  • @Autowired

按照類型(byType)裝配依賴對象,默認(rèn)情況下它要求依賴對象必須存在,如果允許null值,可以設(shè)置它的required屬性為false。如果想使用按照名稱(byName)來裝配,可以結(jié)合@Qualifier注解一起使用。

  • @Resource

按照ByName自動注入,需要導(dǎo)入包javax.annotation.Resource。@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。

  • @PathVariable

用于將請求URL中的模板變量映射到功能處理方法的參數(shù)上,即取出uri模板中的變量作為參數(shù)。

四、常見參數(shù)映射

1、普通映射

@RequestMapping("/getSum")
public Integer getSum (int a,int b){
    return a+b ;
}

測試:

http://localhost:6003/getSum?a=1&b=2

傳參名稱和方法參數(shù)保持一致。

2、指定參數(shù)名

@RequestMapping("/getInfo")
public String getInfo (@RequestParam("name") String var1,
                       @RequestParam("say") String var2){
    return var1+":"+var2 ;
}

測試:

http://localhost:6003/getInfo?name=cica&say=hello

傳參名和 @RequestParam 指定的參數(shù)名要對應(yīng)。

3、數(shù)組參數(shù)

@GetMapping("/getArray")
public String getArray (String[] ids){
    return ids[0]+"-"+ids[1] ;
}

測試:

http://localhost:6003/getArray?ids=2&ids=3

傳遞并解析數(shù)組類型的參數(shù)格式。

4、Map參數(shù)

測試:

http://localhost:6003/getCityEntity?province=浙江&name=杭州

這里以Post方式將相關(guān)參數(shù)傳遞CityEntity實體對象中。

5、包裝參數(shù)

@PostMapping("/getCityEntity")
public CityEntity getCityEntity (CityEntity cityEntity){
    return cityEntity ;
}

測試:

http://localhost:6003/getCityEntity?province=浙江&name=杭州

這里以Post方式將相關(guān)參數(shù)傳遞CityEntity實體對象中。

6、Rest風(fēng)格參數(shù)

@GetMapping("/getId/{id}")
public String getId (@PathVariable("id") Integer id){
    return "id="+id ;
}

測試:

http://localhost:6003/getId/1

RestFul 風(fēng)格參數(shù)映射。

五、源代碼地址

GitHub·地址
https://github.com/cicadasmile/spring-mvc-parent
GitEE·地址
https://gitee.com/cicadasmile/spring-mvc-parent

以上就是SpringMvc框架的簡介與執(zhí)行流程詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringMvc框架執(zhí)行流程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java線程池的分析和使用詳解

    Java線程池的分析和使用詳解

    本篇文章主要介紹了Java線程池的分析和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • java實現(xiàn)微信搶紅包算法

    java實現(xiàn)微信搶紅包算法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)微信搶紅包算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • MybatisPlus中selectPage的使用方法

    MybatisPlus中selectPage的使用方法

    本文主要介紹了MybatisPlus中selectPage的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • zuul轉(zhuǎn)發(fā)后服務(wù)取不到請求路徑的解決

    zuul轉(zhuǎn)發(fā)后服務(wù)取不到請求路徑的解決

    這篇文章主要介紹了zuul轉(zhuǎn)發(fā)后服務(wù)取不到請求路徑的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 使用Java生成32位16進(jìn)制密鑰的代碼實現(xiàn)

    使用Java生成32位16進(jìn)制密鑰的代碼實現(xiàn)

    在許多加密和安全應(yīng)用中,生成隨機的密鑰是至關(guān)重要的一步,密鑰通常以16進(jìn)制形式表示,并且具有特定的長度,在這篇博客中,我們將探討如何使用Java生成一個32位長度的16進(jìn)制密鑰,并展示詳細(xì)的代碼示例和運行結(jié)果,需要的朋友可以參考下
    2024-08-08
  • SpringBoot項目配置postgresql數(shù)據(jù)庫完整步驟(配置多數(shù)據(jù)源)

    SpringBoot項目配置postgresql數(shù)據(jù)庫完整步驟(配置多數(shù)據(jù)源)

    PostgreSQL是一種特性非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),下面這篇文章主要給大家介紹了關(guān)于SpringBoot項目配置postgresql數(shù)據(jù)庫(配置多數(shù)據(jù)源)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

    利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

    雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外,增加了服務(wù)端對客戶端的認(rèn)證,下面這篇文章主要介紹了利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法,需要的朋友可以借鑒,下面來一起看看吧。
    2017-02-02
  • springboot下配置多數(shù)據(jù)源的方法

    springboot下配置多數(shù)據(jù)源的方法

    本篇文章主要介紹了springboot下配置多數(shù)據(jù)源的方法,具有一定的參考價值,有興趣的可以了解一下
    2017-04-04
  • JAVA設(shè)計模式中的策略模式你了解嗎

    JAVA設(shè)計模式中的策略模式你了解嗎

    這篇文章主要為大家詳細(xì)介紹了JAVA設(shè)計模式中的策略模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • mybatis plus時間判斷問題

    mybatis plus時間判斷問題

    在MyBatisPlus中,時間判斷可以通過XML轉(zhuǎn)義的方式實現(xiàn),例如使用>、<、<>、>=、<=進(jìn)行比較,這種方法涉及到SQL符號的轉(zhuǎn)義,確保查詢語句的安全性和準(zhǔn)確性,特別是在處理大于、小于和等于等邏輯時,正確的轉(zhuǎn)義能夠防止SQL注入等安全問題
    2024-09-09

最新評論

海南省| 镇坪县| 台南市| 砚山县| 林芝县| 海原县| 富民县| 赤水市| 大庆市| 梓潼县| 天全县| 东平县| 资中县| 大新县| 清镇市| 东阿县| 攀枝花市| 满城县| 泰州市| 阳西县| 襄汾县| 文化| 黑山县| 拜泉县| 泗水县| 东辽县| 丹凤县| 德格县| 东辽县| 永兴县| 达拉特旗| 宁强县| 长岛县| 军事| 平利县| 阿拉善左旗| 武山县| 武义县| 黄陵县| 兴化市| 五峰|