#30天專注成長(zhǎng)計(jì)劃# day20?@RequestMapping 方法所支持的參數(shù)類型和返回類型

Spring MVC@RequestMapping 方法所支持的參數(shù)類型和返回類型

@RequestMapping方法方法所支持的常見參數(shù)類型:

1囤锉、請(qǐng)求或響應(yīng)對(duì)象(Servlet API)坦弟⌒桶拢可以是任何具體的請(qǐng)求或響應(yīng)類型的對(duì)象淡诗,比如畜晰,ServletRequest或HttpServletRequest對(duì)象吕世。

2叹阔、HttpSession類型的會(huì)話對(duì)象(Servlet API)砍濒。使用該類型的參數(shù)將要求這樣一個(gè)session的存在铐懊,因此這樣的參數(shù)永不為null朽缴。

3沧侥、當(dāng)前請(qǐng)求的地區(qū)信息java.util.Locale可霎,由已配置的最相關(guān)的地區(qū)解析器解析得到。

4宴杀、java.util.TimeZone(java 6以上的版本)/java.time.ZoneId(java 8)癣朗,由LocaleContextResolver解析得到

5、org.springframework.http.HttpMethod旺罢】跤啵可以拿到HTTP請(qǐng)求方法

包裝了當(dāng)前被認(rèn)證用戶信息的

java.security.Principal

6、帶@PathVariable標(biāo)注的方法參數(shù)扁达,其存放了URI模板變量中的值正卧。

7、帶@RequestParam標(biāo)注的方法參數(shù)跪解,其存放了Servlet請(qǐng)求中所指定的參數(shù)炉旷。參數(shù)的值會(huì)被轉(zhuǎn)換成方法參數(shù)所聲明的類型。

8叉讥、帶@RequestHeader標(biāo)注的方法參數(shù)窘行,其存放了Servlet請(qǐng)求中所指定的HTTP請(qǐng)求頭的值。參數(shù)的值會(huì)被轉(zhuǎn)換成方法參數(shù)所聲明的類型图仓。

9罐盔、帶@RequestBody標(biāo)注的參數(shù),提供了對(duì)HTTP請(qǐng)求體的存取救崔。參數(shù)的值通過HttpMessageConverter被轉(zhuǎn)換成方法參數(shù)所聲明的類型惶看。

10、帶@RequestPart標(biāo)注的參數(shù)帚豪,提供了對(duì)一個(gè)"multipart/form-data請(qǐng)求塊(request part)內(nèi)容的存取碳竟。

11、HttpEntity類型的參數(shù)狸臣,其提供了對(duì)HTTP請(qǐng)求頭和請(qǐng)求內(nèi)容的存取。請(qǐng)求流是通過HttpMessageConverter被轉(zhuǎn)換成entity對(duì)象的昌执。

12烛亦、java.util.Map/org.springframework.io.Model/org.springframework.ui.ModelMap類型的參數(shù)诈泼,用以增強(qiáng)默認(rèn)暴露給視圖層的模型(model)的功能

13、org.springframework.web.servlet.mvc.support.RedirectAttributes類型的參數(shù)煤禽,用以指定重定向下要使用到的屬性集以及添加flash屬性

14铐达、命令或表單對(duì)象,它們用于將請(qǐng)求參數(shù)直接綁定到bean字段(可能是通過setter方法)檬果。你可以通過@InitBinder標(biāo)注和/或HanderAdapter的配置來定制這個(gè)過程的類型轉(zhuǎn)換瓮孙。

15、RequestMappingHandlerAdapter類webBindingInitializer屬性的文檔选脊。這樣的命令對(duì)象杭抠,以及其上的驗(yàn)證結(jié)果,默認(rèn)會(huì)被添加到模型model

16恳啥、org.springframework.validation.Errors / org.springframework.validation.BindingResult驗(yàn)證結(jié)果對(duì)象偏灿,用于存儲(chǔ)前面的命令或表單對(duì)象的驗(yàn)證結(jié)果(緊接其前的第一個(gè)方法參數(shù))。

17钝的、org.springframework.web.bind.support.SessionStatus對(duì)象翁垂,用以標(biāo)記當(dāng)前的表單處理已結(jié)束。這將觸發(fā)一些清理操作:@SessionAttributes在類級(jí)別標(biāo)注的屬性將被移除

18硝桩、org.springframework.web.util.UriComponentsBuilder構(gòu)造器對(duì)象沿猜,用于構(gòu)造當(dāng)前請(qǐng)求URL相關(guān)的信息,比如主機(jī)名碗脊、端口號(hào)啼肩、資源類型(scheme)、上下文路徑望薄、servlet映射中的相對(duì)部分(literal part)等

@RequestMapping方法方法支持的常見返回類型:

1疟游、ModelAndView對(duì)象,其中model隱含填充了命令對(duì)象痕支,以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值颁虐。

2、Model對(duì)象卧须,其中視圖名稱默認(rèn)由RequestToViewNameTranslator決定另绩,model隱含填充了命令對(duì)象以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值

3、Map對(duì)象花嘶,用于暴露model笋籽,其中視圖名稱默認(rèn)由RequestToViewNameTranslator決定,model隱含填充了命令對(duì)象以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值

4椭员、View對(duì)象车海。其中model隱含填充了命令對(duì)象,以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值隘击。handler方法也可以增加一個(gè)Model類型的方法參數(shù)來增強(qiáng)model

5侍芝、String對(duì)象研铆,其值會(huì)被解析成一個(gè)邏輯視圖名。其中州叠,model將默認(rèn)填充了命令對(duì)象以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值棵红。handler方法也可以增加一個(gè)Model類型的方法參數(shù)來增強(qiáng)model

6、void咧栗。如果處理器方法中已經(jīng)對(duì)response響應(yīng)數(shù)據(jù)進(jìn)行了處理(比如在方法參數(shù)中定義一個(gè)ServletResponse或HttpServletResponse類型的參數(shù)并直接向其響應(yīng)體中寫東西)逆甜,那么方法可以返回void。handler方法也可以增加一個(gè)Model類型的方法參數(shù)來增強(qiáng)model

如果處理器方法標(biāo)注了ResponseBody致板,那么返回類型將被寫到HTTP的響應(yīng)體中交煞,而返回值會(huì)被HttpMessageConverters轉(zhuǎn)換成所方法聲明的參數(shù)類型。

7可岂、HttpEntity或ResponseEntity對(duì)象错敢,用于提供對(duì)Servlet HTTP響應(yīng)頭和響應(yīng)內(nèi)容的存取。對(duì)象體會(huì)被HttpMessageConverters轉(zhuǎn)換成響應(yīng)流缕粹。

HttpHeaders對(duì)象稚茅,返回一個(gè)不含響應(yīng)體的response

如果返回類型不是Spring MVC默認(rèn)識(shí)別的類型,則會(huì)被處理成model的一個(gè)屬性并返回給視圖平斩,該屬性的名稱為方法級(jí)的@ModelAttribute所標(biāo)注的字段名(或者以返回類型的類名作為默認(rèn)的屬性名)亚享。model隱含填充了命令對(duì)象以及標(biāo)注了@ModelAttribute字段的存取器被調(diào)用所返回的值


圖片發(fā)自簡(jiǎn)書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绘面,隨后出現(xiàn)的幾起案子欺税,更是在濱河造成了極大的恐慌,老刑警劉巖揭璃,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晚凿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘦馍,警方通過查閱死者的電腦和手機(jī)歼秽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來情组,“玉大人燥筷,你說我怎么就攤上這事≡撼纾” “怎么了肆氓?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)底瓣。 經(jīng)常有香客問我谢揪,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任键耕,我火速辦了婚禮寺滚,結(jié)果婚禮上柑营,老公的妹妹穿的比我還像新娘屈雄。我一直安慰自己,他們只是感情好官套,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布酒奶。 她就那樣靜靜地躺著,像睡著了一般奶赔。 火紅的嫁衣襯著肌膚如雪惋嚎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天站刑,我揣著相機(jī)與錄音另伍,去河邊找鬼。 笑死绞旅,一個(gè)胖子當(dāng)著我的面吹牛摆尝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播因悲,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼堕汞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了晃琳?” 一聲冷哼從身側(cè)響起讯检,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卫旱,沒想到半個(gè)月后人灼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顾翼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年投放,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暴构。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跪呈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出取逾,到底是詐尸還是另有隱情耗绿,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布砾隅,位于F島的核電站误阻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜究反,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一寻定、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧精耐,春花似錦狼速、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惊完,卻和暖如春僵芹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背小槐。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工拇派, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凿跳。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓件豌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親拄显。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苟径,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)躬审,斷路器棘街,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法承边,內(nèi)部類的語法遭殉,繼承相關(guān)的語法,異常的語法博助,線程的語...
    子非魚_t_閱讀 31,581評(píng)論 18 399
  • Spring的模型-視圖-控制器(MVC)框架是圍繞一個(gè)DispatcherServlet來設(shè)計(jì)的险污,這個(gè)Servl...
    alexpdh閱讀 2,638評(píng)論 0 3
  • 這部分主要是開源Java EE框架方面的內(nèi)容,包括Hibernate富岳、MyBatis蛔糯、Spring、Spring ...
    雜貨鋪老板閱讀 1,344評(píng)論 0 2
  • 今天好多好多好朋友都祝福我進(jìn)入18歲的行列窖式,也是在大學(xué)的時(shí)候蚁飒,每次生日大家都說18歲,但是今年卻不想這樣萝喘,今天我2...
    二豆君閱讀 206評(píng)論 0 1