@Controller @RequestMapping(value = "/web")//類級別,能夠不用指定路徑 public class LoginController { @Autowired private LoginService loginService; @RequestMapping(value = "/login", method = RequestMethod.POST)//方法級別,必定要指定路徑 @ResponseBody public MobileReturn<Head> login(@RequestBody Student student) { List<Student> list = loginService.login(student); System.out.println(list); Head head =new Head(); head.setData(list); head.setMsg("學生存在"); return new MobileReturn<>(head); //不會被解析爲跳轉路徑,而是直接寫入HTTP response body中 } }
解釋:html
@Responsebody與@RequestBody @Responsebody表示該方法的返回結果直接寫入HTTP response body中 通常在異步獲取數據時使用,在使用@RequestMapping後,返回值一般解析爲跳轉路徑, 加上@Responsebody後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP response body中。 好比異步獲取json數據,加上@Responsebody後,會直接返回json數據。 @RequestBody將HTTP請求正文插入方法中,使用適合的HttpMessageConverter將請求體寫入某個對象。
做用: 該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區。java
使用時機: 返回的數據不是html標籤的頁面,而是其餘某種格式的數據時(如json、xml等)使用。web
做用:
json
i) 該註解用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,而後把相應的數據綁定到要返回的對象上;app
ii) 再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。
異步
使用時機:編碼
A) GET、POST方式提時, 根據request header Content-Type的值來判斷:url
application/x-www-form-urlencoded, 可選(即非必須,由於這種狀況的數據@RequestParam, @ModelAttribute也能夠處理,固然@RequestBody也能處理);spa
multipart/form-data, 不能處理(即便用@RequestBody不能處理這種格式的數據);code
其餘格式, 必須(其餘格式包括application/json, application/xml等。這些格式的數據,必須使用@RequestBody來處理);
B) PUT方式提交時, 根據request header Content-Type的值來判斷:
application/x-www-form-urlencoded, 必須;
multipart/form-data, 不能處理;
其餘格式, 必須;
說明:request的body部分的數據編碼格式由header部分的Content-Type指定。
@RequestMapping
是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。