亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springmvc處理響應(yīng)數(shù)據(jù)的解析

 更新時間:2019年01月11日 11:34:58   作者:qq_43193797  
今天小編就為大家分享一篇關(guān)于springmvc處理響應(yīng)數(shù)據(jù)的解析,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

1. ModelAndView 相關(guān)的成員變量和方法

  • private Object view; 描述視圖信息
  • private ModelMap model 描述模型數(shù)據(jù)(響應(yīng)數(shù)據(jù))
  • public void setViewName(String viewName) 設(shè)置視圖信息
  • public ModelAndView addObject(String attributeName, Object attributeValue) 設(shè)置模型數(shù)據(jù)
  • protected Map<String, Object> getModelInternal() 獲取模型數(shù)據(jù)
  • public ModelMap getModelMap() 獲取模型數(shù)據(jù)
  • public Map<String, Object> getModel() 獲取模型數(shù)據(jù)
  • public String getViewName() 獲取視圖名字

2. ModelAndView 源碼調(diào)試流程

[1]. 在DispatcherServlet的 945 行, 準(zhǔn)備執(zhí)行請求處理方法

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

[2]. 執(zhí)行請求處理方法, 請求處理方法返回一個ModelAndView對象, 最終返回到DispatcherServlet的945行。

[3]. 在DispatcherServlet 959行, 開始處理結(jié)果:解析視圖名字得到視圖對象==>視圖對象處理模型數(shù)據(jù)==>視圖對象完成轉(zhuǎn)發(fā)/重定向工作.

processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

[4]. 在DispatcherServlet的1012行

render(mv, request, response);

[5]. 在DispatcherServlet的1204行,解析視圖名字得到視圖對象.當(dāng)前的視圖對象為: InternalResourceView

view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);

[6].在DispatcherServlet1225行, 視圖對象開始處理模型數(shù)據(jù)

view.render(mv.getModelInternal(), request, response);

說明: 視圖對象的render()方法是在View接口中定義的。 該方法在View接口下面的一個抽象類 AbstractView中進行了具體的實現(xiàn).

[7].在AbstractView中的266行, 開始整合輸出模型數(shù)據(jù)

renderMergedOutputModel(mergedModel, request, response);

說明: renderMergetOutputModel方法是AbstractView中的抽象方法, 該方法在不同的視圖類中進行了不同的實現(xiàn).

當(dāng)前的視圖對象時InternalResourceView, 接下來調(diào)用到InternalResouceView中的renderMergetOutputModel方法。

[8]. 在InternalResourceView中的180行,將模型數(shù)據(jù)設(shè)置到Request域?qū)ο笾?

exposeModelAsRequestAttributes(model, requestToExpose); 

[9]. 在InternalResourceView中的189行,獲取轉(zhuǎn)發(fā)器

RequestDispatcher rd = getRequestDispatcher(requestToExpose, dispatcherPath);

[10].在InternalResourceView中的209行,開始轉(zhuǎn)發(fā).

rd.forward(requestToExpose, response);

3、視圖解析

3.1. Springmvc如何解析視圖?

首先,不論請求處理方法的返回值是String、ModelAndView等, Springmvc在調(diào)用完請求處理方法后,都會重新封裝成一個ModelAndView對象.

接下來, 視圖解析器對象 會解析ModelAndView中的view信息,得到具體的視圖對象.

在然后, 視圖對象會去處理模型數(shù)據(jù), 并完成最終的轉(zhuǎn)發(fā)以及重定向的工作。

3.2. 視圖

3.2.1 視圖接口 View

String getContentType(); 主要用于設(shè)置響應(yīng)頭信息 response.setContentType(“text/html;charset=utf-8”);
void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
視圖對象處理模型數(shù)據(jù).

3.2.2 一個抽象類 AbstractView

View接口中的render()方法是在AbstractView中進行了統(tǒng)一的實現(xiàn).

protected abstract void renderMergedOutputModel(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
throws Exception; 在不同的視圖實現(xiàn)類中做了具體的實現(xiàn),主要就是完成轉(zhuǎn)發(fā)和重定向工作.

3.2.3 視圖的作用

視圖主要就是處理模型數(shù)據(jù), 并完成最終的轉(zhuǎn)發(fā)和重定向工作.

3.2.4 常用的視圖類

  • InternalResourceView 轉(zhuǎn)發(fā)視圖
  • JstlView 轉(zhuǎn)發(fā)視圖,是InternalResourceView的子類.
  • RedirectView 重定向視圖

3. 視圖解析器

3.3 視圖解析器 ViewResolver

View resolveViewName(String viewName, Locale locale) throws Exception; 解析視圖名字得到視圖對象

3.1 視圖解析器的作用

視圖解析器專門就是用于解析得到視圖對象的.

3.2 常用的視圖解析器類

InternalResourceViewResolver

3.3 視圖解析器的優(yōu)先級

默認(rèn)值是int的最大值, 值越小優(yōu)先級越高.

3.4. 重定向

在請求處理方法的返回值前面添加 redirect: 前綴即可.

重定向的工作是由 RedirectView 來完成的.

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Springboot實現(xiàn)密碼的加密解密

    Springboot實現(xiàn)密碼的加密解密

    這篇文章主要為大家詳細(xì)介紹了Springboot實現(xiàn)密碼的加密解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 在Spring Boot中如何使用log4j記錄日志

    在Spring Boot中如何使用log4j記錄日志

    這篇文章主要介紹如何在spring boot中引入log4j,以及一些基礎(chǔ)用法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Java對象創(chuàng)建內(nèi)存案例解析

    Java對象創(chuàng)建內(nèi)存案例解析

    這篇文章主要介紹了Java對象創(chuàng)建內(nèi)存案例解析,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中Jedis基本使用

    Java中Jedis基本使用

    Redis的Java實現(xiàn)的客戶端,本文主要介紹了Java中Jedis基本使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • idea中cherry pick的用法

    idea中cherry pick的用法

    Cherry-Pick可以將一個分支的某些commit,合并到另一個分支,本文給大家分享idea中cherry pick的用法,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • Kotlin教程之函數(shù)和包的定義和流程控制

    Kotlin教程之函數(shù)和包的定義和流程控制

    這篇文章主要介紹了Kotlin教程之函數(shù)和包的定義和流程控制的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot+Vue項目部署實現(xiàn)傳統(tǒng)方式

    SpringBoot+Vue項目部署實現(xiàn)傳統(tǒng)方式

    我們在進行前后端分離開發(fā)的時候,一般是將前端項目部署到nginx服務(wù)器上,與后端項目分開部署,這篇文章主要給大家介紹了關(guān)于SpringBoot+Vue項目部署實現(xiàn)傳統(tǒng)方式的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • ChatGPT介紹及Java?API調(diào)用

    ChatGPT介紹及Java?API調(diào)用

    本文主要介紹了ChatGPT介紹及Java?API調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • SpringCloud集成Hystrix熔斷過程分步分解

    SpringCloud集成Hystrix熔斷過程分步分解

    通過hystrix可以解決雪崩效應(yīng)問題,它提供了資源隔離、降級機制、融斷、緩存等功能。接下來通過本文給大家分享SpringCloud集成Hystrix熔斷,感興趣的朋友一起看看吧
    2022-09-09
  • map實現(xiàn)按value升序排序

    map實現(xiàn)按value升序排序

    map內(nèi)部是按照hash算法存儲的,但如果能對map排序在某些時候還是有用的,下面實現(xiàn)對map按照value升序排序,實現(xiàn)對map按照key排序,大家參考使用吧
    2014-01-01

最新評論