RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
@RequestMapping(value = "/aaa")//類級別,可以沒有
public class myController {
? ? @RequestMapping(value = "/bbb")//方法級別,必須有
??public String getMyName() {
? ? ? ? return "myReturn";
? ? }
}
用在方法上時,表示這個這個處理對應請求的方法,由MVC負責映射進來。
可以這樣理解,當你想吧整個方法中的相同的前綴請求抽離出來,就可以把相同的路徑名字放到類上面。
@Responsebody與@RequestBody
@Responsebody表示該方法的返回結果直接寫入HTTP response body中
一般在異步獲取數據時使用,在使用@RequestMapping后,返回值通常解析為跳轉路徑,
加上@Responsebody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。
比如異步獲取json數據,加上@Responsebody后,會直接返回json數據。
@RequestBody一般用于在提交ajax時所帶的請求參數插入到方法中。 簡單的說就是幫你把提交的數據直接放到你定義的變量中。
例如:
function login() {//頁面異步請求
? ? var mydata = '{"name":"' + $('#name').val() + '","id":"'
? ? ? ? ? ? + $('#id').val() + '","status":"' + $('#status').val() + '"}';
? ? $.ajax({
? ? ? ? type : 'POST',
? ? ? ? contentType : 'application/json',
? ? ? ? url : "${pageContext.request.contextPath}/person/login",
? ? ? ? processData : false,
? ? ? ? dataType : 'json',
? ? ? ? data : mydata,
? ? ? ? success : function(data) {
? ? ? ? ? ? alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
? ? ? ? ? ? ? ? ? ? + data.status);
? ? ? ? },
? ? ? ? error : function() {
? ? ? ? ? ? alert('出錯了!');
? ? ? ? }
? ? });
};
? ? @RequestMapping(value = "person/login")
? ? @ResponseBody
? ? public Person login(@RequestBody Person person) {//將請求中的mydata寫入Person對象中
? ? ? ? return person;//不會被解析為跳轉路徑,而是直接寫入HTTP response body中因為我們加了? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //@ResponseBody這個注解。
? ? }
擴展:@PathVariable獲取請求路徑變量
function profile() {
? ? var url = "${pageContext.request.contextPath}/person/profile/";
? ? var query = $('#id').val() + '/' + $('#name').val() + '/'
? ? ? ? ? ? + $('#status').val();
? ? url += query;
? ? $.get(url, function(data) {
? ? ? ? alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
? ? ? ? ? ? ? ? + data.status);
? ? });
}
? ? @RequestMapping(value = "person/profile/{id}/{name}/{status}")
? ? @ResponseBody
? ? public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {
? ? ? ? return new Person(id, name, status);
? ? }
? //@RequestMapping(value = "/person/profile/{id}/{name}/{status}")中的{id}/{name}/{status}與@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一對應,按名匹配。
[個人GitHub項目,記錄學習Java知識的過程 歡迎star]((https://github.com/likeaxa/JavaStudy))
