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

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

SpringMVC:處理器方法的返回值

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

● 第一種:ModelAndView

● 第二種:String

● 第三種:無返回值 void

● 第四種:返回自定義類型對象

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

返回 ModelAndView(掌握)

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

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

返回 String(理解)

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

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

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

返回 void(了解)

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

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

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

項目:returnVoid-ajax。在 primary-annotation 基礎(chǔ)上進行修改。

Step1:導(dǎo)入 Jar 包

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

Step2:引入 jQuery 庫

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

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

Step3:定義index頁面

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

點擊按鈕發(fā)起請求

Step4:定義對象Student

Step5:修改處理器類MyController

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

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

Step6:刪除視圖頁面

由于是服務(wù)端直接向瀏覽器發(fā)回數(shù)據(jù),所以也就無需視圖頁面了,所以需要刪除WEB-INF中的jsp目錄及其中的show頁面。

Json介紹(理解)

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

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

● “名稱/值”對的集合。

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

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

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

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

返回對象(掌握)

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

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

1、環(huán)境搭建

A、導(dǎo)入Jar包

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

B、注冊注解驅(qū)動

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

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

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

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

HttpMessageConverter接口定義的方法:

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

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

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

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

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

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

2、返回字符串對象

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

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

項目:returnObject-String。

直接修改處理器即可。

3、返回自定義類型對象

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

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

項目:returnObject-custom。在returnObject-string基礎(chǔ)上進行修改。

Step1:定義VO類

Step2:修改處理器MyController

Step3:修改index頁面

4、返回List集合

項目:returnObject-list。在returnObject-custom基礎(chǔ)上進行修改。

Step1:修改處理器MyController

Step2:修改 index 頁面

全部教程
主站蜘蛛池模板: 亚洲欧美日韩高清专区一区 | 亚洲线精品久久一区二区三区 | 天天干天天添 | 免费在线观看毛片 | 黄色国产 | 91久久青青草原线免费 | 日本三级带日本三级带黄国产 | 欧美一区二区手机在线观看视频 | 在线精品视频成人网 | 中文字幕日本一本二本三区 | h视频在线免费观看 | 99视频在线播放 | 毛片在线免费播放 | 久久a视频 | 亚洲手机在线 | 怡红院日本一道日本久久 | 成年人福利网站 | 欧美日韩亚洲一区二区 | www视频在线 | 狠狠躁天天躁夜夜躁夜天战 | 国产精品七七在线播放 | 一a级片 | 久久精品网站免费观看 | 日韩美女影院 | 韩国成人理伦片免费 | 亚洲黄色片一级 | 亚洲国产欧美国产综合一区 | 欧美成人高清视频 | 又粗又长又黄又爽视频 | 日韩欧美一区二区不卡 | 大又大又粗又爽又黄毛片女人 | 日韩有码视频在线 | 99精品免费视品 | 亚洲精品成人av在线 | 99ri精品视频在线观看播放 | 精品不卡| 免费观看一级欧美在线视频 | 宅男在线永久免费观看99 | 狂野欧美性猛交xxxx免费按摩 | 国产成+人+综合+亚洲不卡 | 免费精品一区二区三区第35 |