springmvc我想大家都會覺得特別簡單,心想不就是接收請求,響應請求嘛!以下談談我在開發專案中遇到的一些坑,都是因為概念模糊,知識不準確導致的問題。
對於json格式的引數,首先這種引數不能單個接收,必須要用乙個物件整體接收,另外置收引數必須要用@requestbody註解。並且json格式的字串可以用map接收,@requestbody是可以將json引數轉換成map的。如果不想用物件接收,或者說沒有現成的物件能夠接收怎麼辦,一是可以用map,另外可以用string型別來接收,直接把整個json字串接收下來,前面也要加上@requestbody註解,如:@requestbody string s,這樣就可以把整個引數字串接收下來,再用json工具類轉換為物件。在json中資料是分型別的,與js中的型別是一致的,比如說不加引號的1就是數字型別,加上引號就是字串。但是我們在接收引數時,這些都不用關心,因為有@requestbody註解,他都幫我們做了轉換,也就是說我們用什麼型別接收都可以。
最後提一下model,這個型別是不能接收任何引數的,只是用來儲存request屬性的。所以千萬不要誤用。
最後說一下,@requestbody的原理,它的實質是乙個訊息轉換器,messageconverter,這個我們可以在springmvc中的配置,但是不建議大家配,因為springmvc預設使用的就是jackson來處理的,大家都知道jackson就是用來處理json的,所以這也就是為什麼提交表單時,請求體中的引數不能用@requestbody,因為格式不是json。
關於響應就想說兩點,如果是返回檢視,就不要用@responsebody,因為用了這個,就把響應資料弄成json了,不會返回檢視。另外不要在返回檢視的controller上面加@restcontroller,因為這樣一弄,所有的方法返回的都是json字串了,除非是做前後端分離,返回的都是json型別的介面。另外,如果要讓類上的@responsebody起作用,springmvc的配置中必須要加,否則預設只有方法上的@responsebody起作用。
Spring MVC 接收HTTP請求引數的註解
1.spring mvc中,處理的比較多的幾種 http請求資訊格式 content type multipart form data form表單裡面有檔案上傳時,必須要指定enctype屬性值為multipart form data,意思是以二進位製流的形式傳輸檔案 http請求中,reques...
springMVC中的東東
mvc dispatcher org.springframework.web.servlet.dispatcherservlet contextconfiglocation web inf configs spring mvc dispatcher servlet.xml 1 mvc dispatc...
SpringMVC中controller的跳轉
方式一 使用modelandview return new modelandview redirect tolist 這樣可以重定向到tolist這個方法 方式二 返回string return redirect tolist 方式一 自己手動拼接url new modelandview redir...