1. 程式人生 > >Spring中的@Responsebody和@RequestParam

Spring中的@Responsebody和@RequestParam

一、前臺向後臺傳引數的方式

前臺傳引數的三種方式: 路徑傳引數、get傳引數、body傳引數(post)

1. 路徑傳引數,用@PathVariable

@RequestMapping(value = "user/login/{id}/{name}/{status}")
@ResponseBody
public User login(@PathVariable int id, @PathVariable String name, @PathVariable boolean status) {
//返回一個User物件響應ajax的請求
    return new User(id, name, status);
}

2.get傳引數,其實引數也是放在訪問的url中的
 

@RequestMapping(value = "/home")
Public ModelAndView getMv(@RequestParam("id") String param){
}

 3. 使用請求體body傳引數,用@RequestBody

@RequestMapping(value = "user/login")
@ResponseBody
// 將ajax(datas)發出的請求寫入 User 物件中
public User login(@RequestBody User user) {  
// 這樣就不會再被解析為跳轉路徑,而是直接將user物件寫入 HTTP 響應正文中
    return user;   
}



二、@RequestBody 和@RequestParam的區別


@RequestBody主要用來接收前端傳遞給後端的json字串中的資料的(請求體中的資料的),也就是@RequestBody只能處理post請求,不能處理get請求,因為get引數不是放在請求體中,而是放在請求頭中。

在後端的同一個接收方法裡,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多隻能有一個,而RequestParam()可以有多個。

一般用@RequestParam()來解析訪問路徑中的引數,但是@RequestParam()能不能解析請求體中的資料呢,能不能處理post請求?答案是可以的。參見

使用@RequestParam處理post請求

只需要前臺通過表單提交鍵值對資料,後臺通過以下兩種方式獲得:
 在SpringMVC後臺控制層獲取引數的方式主要有兩種,一種是request.getParameter("name"),另外一種是用註解@RequestParam直接獲取。

後續補充前臺ajax傳參