真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在springmvc中處理響應(yīng)數(shù)據(jù)

如何在springmvc中處理響應(yīng)數(shù)據(jù)?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來堅(jiān)持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、軟件開發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!

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 getModelInternal() 獲取模型數(shù)據(jù)

  • public ModelMap getModelMap() 獲取模型數(shù)據(jù)

  • public Map getModel() 獲取模型數(shù)據(jù)

  • public String getViewName() 獲取視圖名字

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

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

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

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

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

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

[4]. 在DispatcherServlet的1012行

render(mv, request, response);

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

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

如何在springmvc中處理響應(yīng)數(shù)據(jù)

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

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

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

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

renderMergedOutputModel(mergedModel, request, response);

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

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

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

exposeModelAsRequestAttributes(model, requestToExpose); 

如何在springmvc中處理響應(yīng)數(shù)據(jù)

[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如何解析視圖?

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

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

在然后, 視圖對(duì)象會(huì)去處理模型數(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 model, HttpServletRequest request, HttpServletResponse response)
視圖對(duì)象處理模型數(shù)據(jù).

3.2.2 一個(gè)抽象類 AbstractView

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

protected abstract void renderMergedOutputModel(
Map model, HttpServletRequest request, HttpServletResponse response)
throws Exception; 在不同的視圖實(shí)現(xiàn)類中做了具體的實(shí)現(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; 解析視圖名字得到視圖對(duì)象

3.1 視圖解析器的作用

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

3.2 常用的視圖解析器類

InternalResourceViewResolver

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

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

3.4. 重定向

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

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

關(guān)于如何在springmvc中處理響應(yīng)數(shù)據(jù)問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


當(dāng)前名稱:如何在springmvc中處理響應(yīng)數(shù)據(jù)
當(dāng)前鏈接:http://weahome.cn/article/gcpego.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部