SpringMVC學(xué)習(xí)筆記---1

1.SpringMVC中常用的幾個(gè)注解

1)@Controller 表明當(dāng)前類為Controller
2)@RequestMaping 當(dāng)前類或者方法的映射路徑,@RequestMapping中常用的幾個(gè)參數(shù)
 〗朗础①value 當(dāng)前方法或者控制器的映射路徑
  如 @RequestMapping(value="/testSpringMVC")
 〖卑颉②params 當(dāng)前方法需要接收的參數(shù)秧廉。
  如 @RequestMapping(value="/testSpringMVC"馏段, params={"userName", "age!=10"})
 】仇③headers 當(dāng)前方法接收的請(qǐng)求頭
  如 @RequestMapping(value="/testSpringMVC", params={"username", "age!=10"}, headers={"Accept-Language=en-US,zh;q=0.8"})
 ∥绕洹④method 當(dāng)前請(qǐng)求的請(qǐng)求類型驶赏, 如:@RequestMapping(value="/testSpringMVC", method=RequestMethod.POST), 一般情況下可選的為POST,GET
3)@PathVariable 當(dāng)前方法接收的url占位符參數(shù) 如:   
@RequestMapping("/testSpringMVC/{id}")

public String testSpringMVC(@PathVariable("id") Integer id){ 
  //fill this with necessary bussiness logic
}

同時(shí)SpringMVC支持ant風(fēng)格的url既鞠,如:@RequestMapping("/testSpringMVC/*/test")
  簡(jiǎn)單ant風(fēng)格:煤傍? 匹配單個(gè)字符≈龅埃  * 匹配0或任意數(shù)量的字符蚯姆。  **匹配0或任意數(shù)量的目錄
4)@RequestParam 映射請(qǐng)求參數(shù)
@RequestParam(value="age", required=false, defaultValue = "0") Integer age
 ∪髅簟①value 參數(shù)名稱
 ×淞怠②required 是否必須,默認(rèn)為是
 ⌒谆铩③defaultValue 默認(rèn)值
5)@RequestHeader 獲取請(qǐng)求頭
  如: @RequestHeader(value="Accept-Language") String val
 」稀①value 請(qǐng)求頭參數(shù)名
6)@CookieValue 獲取請(qǐng)求中的Cookie
  如:@CookieValue(value="JSESSIONID") String val
7)@SessionAttribute 通過屬性名或者對(duì)象類型將屬性放置到Session中,如
  @SessionAttributes(value={"user"}, types={String.class})  將model中key為user或者字符串的value放置到session中
  注意:該注解只能用來修飾類不能用來修飾方法函荣。
8)@ModelAttribute
  被ModelAttribute注解標(biāo)記的方法將在每個(gè)目標(biāo)方法執(zhí)行之前被SpringMVC調(diào)用显押。

2.SpringMVC對(duì)Rest風(fēng)格URL的支持

1)Rest風(fēng)格
  URL表示資源,http方法表示操作傻挂,get煮落、post、put踊谋、delete等。
  更多參照: http://wenku.baidu.com/view/660324c58bd63186bcebbcc3.html
2)Spring如何支持Rest風(fēng)格旋讹。
 ≈巢稀①需要開啟org.springframework.web.filter.HiddenHttpMethodFilter


<filter>
   <filter-name>HiddenHttpMethodFilter</filter-name> 
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>HiddenHttpMethodFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

②在form表單中開啟一個(gè)name為_method,value為PUT或DELETE隱藏域

<form action="/TestSpringMVC/testRest/1" method="post">
   <input type="hidden" name="_method" value="DELETE"> 
  <input type="submit" value="testRestDelete" /> 
</form>

③RequestMethod設(shè)置為對(duì)應(yīng)的值:GET沉迹、POST睦疫、PUT、DELETE
3)出現(xiàn)的問題
  由于采用的是Rest風(fēng)格URL請(qǐng)求鞭呕,返回時(shí)也采用的是resf風(fēng)格蛤育,如:DELELE,對(duì)應(yīng)到返回的JSP則不適用,報(bào)錯(cuò)JSPs only permit GET POST or HEAD
  解決思路:
   ⊥吒狻①最簡(jiǎn)單粗暴的解決方法就是采用重定向"redirect:/specificURL"底洗,重新請(qǐng)求另一個(gè)沒有使用Rest風(fēng)格的資源,返回也就不是rest風(fēng)格了咕娄。
   『ヒ尽②springMVC 對(duì)于Rest風(fēng)格的請(qǐng)求,是通過post體中的"_method"(可自定義)參數(shù)值來識(shí)別的圣勒,我們可以在程序中的的某個(gè)地方從parameterMap中刪除這個(gè)參數(shù)费变,但是實(shí)現(xiàn)request接口的Servelet容器往往會(huì)鎖定parameterMap,所以可能需要反射圣贸,引入容器特有的jar
   ≈科纭③擴(kuò)展HiddenHttpMethodFilter類,增加對(duì)"_convertToPost"(不是parameter吁峻,而是attribute)屬性的識(shí)別滑负,如果"_convertToPost"為true,那么跳過HiddenHttpMethodFilter所有操作锡搜。
   〕壤А④重寫HiddenHttpMethodFilter中的getMethod方法
   不過使用tomcat8才會(huì)出現(xiàn)上述問題,使用tomcat7則不會(huì)耕餐。

3.SpringMVC對(duì)servlet原生API作為目標(biāo)方法參數(shù)的支持

HttpServletRequest 凡傅、 HttpServletResponse 、HttpSession肠缔、java.security.Principal 夏跷、Locale InputStream 、OutputStream 明未、Reader 槽华、Writer。如:

public void servletAPISupport(HttpServletRequest request, HttpServletResponse response, Writer out) { 
//fill this with necessary business logic 
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趟妥,一起剝皮案震驚了整個(gè)濱河市猫态,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌披摄,老刑警劉巖亲雪,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疚膊,居然都是意外死亡义辕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門寓盗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌砖,“玉大人璧函,你說我怎么就攤上這事白筹⌒扯” “怎么了愤兵?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵粪般,是天一觀的道長(zhǎng)尼酿。 經(jīng)常有香客問我拆撼,道長(zhǎng)竞阐,這世上最難降的妖魔是什么眠饮? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任摸航,我火速辦了婚禮制跟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酱虎。我一直安慰自己雨膨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布读串。 她就那樣靜靜地躺著聊记,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恢暖。 梳的紋絲不亂的頭發(fā)上排监,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音杰捂,去河邊找鬼舆床。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫁佳,可吹牛的內(nèi)容都是我干的挨队。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蒿往,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盛垦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓤漏,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤腾夯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蔬充,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俯在,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年娃惯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥败。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趾浅,死狀恐怖愕提,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情皿哨,我是刑警寧澤浅侨,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站证膨,受9級(jí)特大地震影響如输,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜央勒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一不见、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崔步,春花似錦稳吮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瑞你,卻和暖如春酪惭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背者甲。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工春感, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人过牙。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓甥厦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親寇钉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刀疙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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