黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

SpringMVC教程
SpringMVC注解式開發(fā)
SpringMVC核心技術(shù)
SSM整合開發(fā)

SpringMVC:處理器方法的返回值

使用@Controller 注解的處理器的處理器方法,其返回值常用的有四種類型:

● 第一種:ModelAndView

● 第二種:String

● 第三種:無返回值 void

● 第四種:返回自定義類型對(duì)象

根據(jù)不同的情況,使用不同的返回值。

返回 ModelAndView(掌握)

若處理器方法處理完后,需要跳轉(zhuǎn)到其它資源,且又要在跳轉(zhuǎn)的資源間傳遞數(shù)據(jù),此時(shí) 處理器方法返回 ModelAndView 比較好。當(dāng)然,若要返回 ModelAndView,則處理器方法中 需要定義 ModelAndView 對(duì)象。

在使用時(shí),若該處理器方法只是進(jìn)行跳轉(zhuǎn)而不傳遞數(shù)據(jù),或只是傳遞數(shù)據(jù)而并不向任何 資源跳轉(zhuǎn)(如對(duì)頁(yè)面的 Ajax 異步響應(yīng)),此時(shí)若返回 ModelAndView,則將總是有一部分多 余:要么 Model 多余,要么 View 多余。即此時(shí)返回 ModelAndView 將不合適。

返回 String(理解)

處理器方法返回的字符串可以指定邏輯視圖名,通過視圖解析器解析可以將其轉(zhuǎn)換為物理視圖地址,返回內(nèi)部資源邏輯視圖名,若要跳轉(zhuǎn)的資源為內(nèi)部資源,則視圖解析器可以使用 InternalResourceViewResolver 內(nèi)部資源視圖解析器。此時(shí)處理器方法返回的字符串就是要跳轉(zhuǎn)頁(yè)面的文件名去掉文件擴(kuò)展名后的部分。這個(gè)字符串與視圖解析器中的 prefix、suffix 相結(jié)合,即可形成要訪問的 URI。

項(xiàng)目:returnString-viewName。在 receiveParameters-object 基礎(chǔ)上修改。直接修改處理器類 MyController

當(dāng)然,也可以直接返回資源的物理視圖名。不過,此時(shí)就不需要再在視圖解析器中再配 置前輟與后輟了。

返回 void(了解)

對(duì)于處理器方法返回 void 的應(yīng)用場(chǎng)景,AJAX 響應(yīng)

若處理器對(duì)請(qǐng)求處理后,無需跳轉(zhuǎn)到其它任何資源,此時(shí)可以讓處理器方法返回 void。

例如,對(duì)于 AJAX 的異步請(qǐng)求的響應(yīng)。

項(xiàng)目:returnVoid-ajax。在 primary-annotation 基礎(chǔ)上進(jìn)行修改。

Step1:導(dǎo)入 Jar 包

由于本項(xiàng)目中服務(wù)端向?yàn)g覽器傳回的是 JSON(JavaScript Object Notation,JS 對(duì)象符號(hào))數(shù)據(jù),需要使用一個(gè)工具類將字符串包裝為 JSON 格式,所以需要導(dǎo)入 JSON 的 Jar 包。

Step2:引入 jQuery 庫(kù)

由于本項(xiàng)目要使用 jQuery 的 ajax()方法提交 AJAX 請(qǐng)求,所以項(xiàng)目中需要引入 jQuery 的庫(kù)。在 WebRoot 下新建一個(gè) Folder(文件夾),命名為 js,并將 jquery-1.11.1.js 文件放入其中。

當(dāng)然,該 jQuery 庫(kù)文件,需要在使用 ajax()方法的 index 頁(yè)面中引入。

Step3:定義index頁(yè)面

index頁(yè)面由兩部分內(nèi)容構(gòu)成:一個(gè)是<button/>,用于提交AJAX請(qǐng)求;一個(gè)是<script/>,用于處理 AJAX 請(qǐng)求。  

點(diǎn)擊按鈕發(fā)起請(qǐng)求

Step4:定義對(duì)象Student

Step5:修改處理器類MyController

處理器對(duì)于AJAX請(qǐng)求中所提交的參數(shù),可以使用逐個(gè)接收的方式,也可以以對(duì)象的方式整體接收。只要保證AJAX請(qǐng)求參數(shù)與接收的對(duì)象類型屬性同名。

以逐個(gè)方式接收參數(shù):

Step6:刪除視圖頁(yè)面

由于是服務(wù)端直接向?yàn)g覽器發(fā)回?cái)?shù)據(jù),所以也就無需視圖頁(yè)面了,所以需要?jiǎng)h除WEB-INF中的jsp目錄及其中的show頁(yè)面。

Json介紹(理解)

JSON(JavaScript Object Notation)(官網(wǎng):http://www.json.org/是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。JSON 采用完全獨(dú)立于語(yǔ)言的文本格式,這些特性使JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。

JSON 的兩種結(jié)構(gòu)

● “名稱/值”對(duì)的集合。

例如{ name:”張三”, age : 23 }

● 值的有序列表,它被理解為數(shù)組。例如:[{ name:”張三”, age : 23 } , { name:”李力”, age : 28 }]

在JSON-Lib中“名稱/值”對(duì)的集合用JSONObject對(duì)象表示,數(shù)組用JSONArray對(duì)象表示。

常用的的json庫(kù):json-lib , Jackson , google公司的gson和阿里巴巴的fastjson

返回對(duì)象(掌握)

處理器方法也可以返回Object對(duì)象。這個(gè)Object可以是Integer,String,自定義對(duì)象,Map,List等。但返回的對(duì)象不是作為邏輯視圖出現(xiàn)的,而是作為直接在頁(yè)面顯示的數(shù)據(jù)出現(xiàn)的。

返回對(duì)象,需要使用@ResponseBody注解,將轉(zhuǎn)換后的JSON數(shù)據(jù)放入到響應(yīng)體中。

1、環(huán)境搭建

A、導(dǎo)入Jar包

由于返回Object數(shù)據(jù),一般都是將數(shù)據(jù)轉(zhuǎn)化為了JSON對(duì)象后傳遞給瀏覽器頁(yè)面的。而這個(gè)由Object轉(zhuǎn)換為JSON,是由Jackson工具完成的。所以需要導(dǎo)入Jackson的相關(guān)Jar包。

B、注冊(cè)注解驅(qū)動(dòng)

將Object數(shù)據(jù)轉(zhuǎn)化為JSON數(shù)據(jù),需要由消息轉(zhuǎn)換器HttpMessageConverter完成。而轉(zhuǎn)換器的開啟,需要由來完成。

SpringMVC使用消息轉(zhuǎn)換器實(shí)現(xiàn)請(qǐng)求數(shù)據(jù)和對(duì)象,處理器方法返回對(duì)象和響應(yīng)輸出之間的自動(dòng)轉(zhuǎn)換。

當(dāng)Spring容器進(jìn)行初始化過程中,在處創(chuàng)建注解驅(qū)動(dòng)時(shí),默認(rèn)創(chuàng)建了七個(gè)HttpMessageConverter對(duì)象。也就是說,我們注冊(cè),就是為了讓容器為我們創(chuàng)建HttpMessageConverter對(duì)象。

HttpMessageConverter接口: HttpMessageConverter 是Spring3.0 新添加的一個(gè)接口,負(fù)責(zé)將請(qǐng)求信息轉(zhuǎn)換為一個(gè)對(duì)象(類型為T),將對(duì)象(類型為T)輸出為響應(yīng)信息

HttpMessageConverter接口定義的方法:

boolean canRead(Class clazz,MediaType mediaType): 指定轉(zhuǎn)換器可以讀取的對(duì)象類型,即轉(zhuǎn)換器是否可將請(qǐng)求信息轉(zhuǎn)換為clazz 類型的對(duì)象,同時(shí)指定支持MIME 類型(text/html,applaiction/json等)

boolean canWrite(Class clazz,MediaType mediaType):指定轉(zhuǎn)換器是否可將clazz 類型的對(duì)象寫到響應(yīng)流中,響應(yīng)流支持的媒體類型在MediaType 中定義。

LIst getSupportMediaTypes():該轉(zhuǎn)換器支持的媒體類型。

T read(Class clazz,HttpInputMessage inputMessage):將請(qǐng)求信息流轉(zhuǎn)換為T 類型的對(duì)象。

void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):將T類型的對(duì)象寫到響應(yīng)流中,同時(shí)指定相應(yīng)的媒體類型為contentType

加入注解驅(qū)動(dòng)后適配器類的messageConverters屬性值

2、返回字符串對(duì)象

若要返回非中文字符串,將前面返回?cái)?shù)值型數(shù)據(jù)的返回值直接修改為字符串即可。但若返回的字符串中帶有中文字符,則接收方頁(yè)面將會(huì)出現(xiàn)亂碼。此時(shí)需要使用@RequestMapping的produces屬性指定字符集。

produces,產(chǎn)品,結(jié)果,即該屬性用于設(shè)置輸出結(jié)果類型。

項(xiàng)目:returnObject-String。

直接修改處理器即可。

3、返回自定義類型對(duì)象

返回自定義類型對(duì)象時(shí),不能以對(duì)象的形式直接返回給客戶端瀏覽器,而是將對(duì)象轉(zhuǎn)換為JSON格式的數(shù)據(jù)發(fā)送給瀏覽器的。

由于轉(zhuǎn)換器底層使用了Jackson轉(zhuǎn)換方式將對(duì)象轉(zhuǎn)換為JSON數(shù)據(jù),所以需要導(dǎo)入Jackson的相關(guān)Jar包。

項(xiàng)目:returnObject-custom。在returnObject-string基礎(chǔ)上進(jìn)行修改。

Step1:定義VO類

Step2:修改處理器MyController

Step3:修改index頁(yè)面

4、返回List集合

項(xiàng)目:returnObject-list。在returnObject-custom基礎(chǔ)上進(jìn)行修改。

Step1:修改處理器MyController

Step2:修改 index 頁(yè)面

全部教程
主站蜘蛛池模板: 在线观看中文字幕第一页 | 久久蝌蚪| 一级二级黄色片 | 日本在线小视频 | 日日爽夜夜爽 | 国产亚洲三级 | 免费国产成人高清无线看软件 | 日韩经典一区 | 国产一区二区成人 | 成人毛片免费在线观看 | 2020最新国产精品视频 | a级理论片 | 碰碰碰人人澡人人爱摸 | 91好色视频 | 免费 视频 1级 | 成人综合影院 | 亚洲精品性夜夜夜 | 成年网站免费 | 天堂网久久 | 日韩视频免费一区二区三区 | 免费看男女做黄的软件 | 一本色道久久综合亚洲精品高清 | 久久澡人人澡狠狠澡 | 五月天婷婷激情 | 亚洲免费专区 | 成人免费大片黄在线观看com | 一级特黄aa大片免费 | 免费人成网555www | 黄色视频毛片 | 成人亚洲欧美日韩在线观看 | 亚洲视频天天射 | 欧美黄色免费网站 | 亚洲第一成年免费网站 | 国产成在线观看免费视频成本人 | 三级a黄 | 最新亚洲情黄在线网站 | 99re在线 | 亚洲精品福利在线观看 | 99热.com| 日韩毛片大全 | 福利网站在线 |