此處name屬性,相當于方法的注釋,使方法更易理解
@RequestMapping(value = “login”,name = “用戶登錄”)
@ResponseBody
public String login() {
return “success”;
}
指定請求的實際地址,指定的地址可以是URI 模板模式(Template Pattern);
@Controller
@RequestMapping(“user”) //此處如果不省略,則為@RequestMapping(value=“user”)
public class UserController {
@RequestMapping(“login”)
@ResponseBody
public String login() {
return “success”;
}
}
由于value屬性是@RequestMapping注釋的默認屬性,因此如果只有唯一的屬性,則可以省略該屬性名,如果有超過一個屬性,則必須寫上value屬性名稱。即如下兩個標注含義一樣:
@RequestMapping(value=“login”)
@RequestMapping(“login”)
value屬性支持通配符匹配:
@RequestMapping(value=“login/*”);
即:http://localhost:8080/login/1或者http://localhost:8080/login/hahaha都能夠正常訪問該接口
此處通過URL:http://localhost:8080/user/login進行訪問,將由login()方法進行處理
與value同義,path(value)(path 和 value 互相引用,參見RequestMapping接口源碼)
path屬性,和1中的value屬性使用一致,兩者都是用來作為映射使用的。
@RequestMapping(value=“login”)、@RequestMapping(path=“login”),這兩種情況都能對login()方法進行訪問
path屬性支持通配符匹配:
@RequestMapping(path=“login/*”);
即:http://localhost:8080/login/1或者http://localhost:8080/login/abc都能夠正常訪問
指定請求類型, 如GET、POST、PUT、DELETE等;
@RequestMapping(value = “login”,method = RequestMethod.GET)
@ResponseBody
public String login() {
return “success”;
}
以上方法表示,該方法只支持GET請求。
此處也可以為:
@RequestMapping(value = “login”,method = {RequestMethod.GET,RequestMethod.POST})
說明該方法可以同時支持GET和POST請求。
如果沒有method屬性,則說明該方法支持全部的HTTP請求。
該屬性指定,請求中必須包含params屬性規定的參數時,才能執行該請求。
@RequestMapping(value = “login”,params = “flag”)
@ResponseBody
public String login() {
return “success”;
}
以上方法,說明請求中必須包含flag參數才能執行該請求,flag參數值不做要求
http://localhost:8080/login?flag=xxx // 正常訪問
http://localhost:8080/login // 無法訪問
@RequestMapping(value = “login”,params = “flag=true”)
@ResponseBody
public String login() {
return “success”;
}
以上方法,說明請求中必須包含flag參數,而且參數值必須為true才能執行該請求
http://localhost:8080/login?flag=true // 正常訪問
http://localhost:8080/login?flag=false // 無法訪問
http://localhost:8080/login // 無法訪問
該屬性指定,請求中必須包含某些指定的header值,才能夠讓該方法處理請求。
如Chrome瀏覽器:
可以通過點擊F12(進入開發者模式)---->Network---->Name中點擊網頁---->右側查看Headers即可。
設置Response的Content-Type
spring MVC中如何設置應答體的content type呢?
@RequestMapping(value = "/json")
@ResponseBody
public String upload(HttpServletRequest request, HttpServletResponse response,String contentType2)
throws IOException {
Demo1 demo1 = new Demo1()
String json = JsonUtils.objectToJson(Demo1);//一個json工具類,轉換為json
return json;
}
這樣做,雖然在客戶端確實相應的的事json,但是response的Content-type確實text/html。會有些問題發生,若是json中包含有中文,會亂碼。
解決辦法:
@RequestMapping(value="/pic/upload",produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8")
Producible Media Types的解釋:
你可以通過一個簡化類型的列表來縮小主映射體,只有當Accept請求頭與其中一個值匹配時,請求才會匹配。此外,使用生成條件確保所使用的實際內容類型
詳情請查閱官方APIhttp://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/MediaType.html
項目中:
@RequestMapping(value = "/getListYS", produces = {"application/json;charset=UTF-8;","application/json;"})
============
原文鏈接:https://blog.csdn.net/m0_63102527/article/details/121062845
https://blog.csdn.net/Lovincc/article/details/73554693