Ⅰ我衬、關于映射的注解
映射的概念
我對映射的理解:映射就是路徑和接口的對應關系曹动。一個相對路徑斋日,通過注解形式加在接口上,前端去請求這個地址墓陈,就相當于調用了相應的接口恶守。
以下面controller代碼為例,前端想請求Controller執(zhí)行studentLogin方法去處理某些數據贡必,那么在表單的提交地址中寫上@PostMapping注解中的值就行了
@PostMapping("check")
public ModelAndView studentLogin(Student student){
...
}
前端:
<form method="post" action="/login/check">
...
</form>
映射常用的三個注解
-
@RequestMapping
-
@PostMapping:請求方式為post時用
@PostMapping("test")
其作用相當于
@RequestMapping(value = "test",method = RequestMethod.POST)
-
@GetMapping:請求方式為get時用
@GetMapping("test2")
其作用相當于
@RequestMapping(value = "test2",method = RequestMethod.GET)
-
Ⅱ兔港、其它注解
1.作用在參數上
①RequestParam
作用:建立參數名和前端頁面中的name值之間的關系
當前端頁面中的name值與controller中對應方法的參數名一樣時,@RequestParam是可以不用的
例如
public void Xxx(@RequestParam("sname") String studentName){...};
前端
學生名:<input type="text" name="sname">
在這個例子中仔拟,如果不加@RequestParam("sname")注解衫樊,那么studentName參數無法接收sname的值,只能為null
//表單中的name值為uage,不一定要求必須傳入這個數據,默認值為23
@RequestParam(value="uage",required=false,defaultValue="23")
②RequestHeader
獲取請求頭信息
public String testRequestHeader(@RequestHeader("Accept-Language") String al)
獲取請求頭中的Accept-Language值,并將值保存再al變量中
③CookieValue
獲取Cookie中的值科侈,并將值保存再變量中
public void Xxx(@CookieValue("JSESSIONID") String jsessionid){...}
把cookie中的JSESSIONID保存在變量jsessionid中
④RequestBody
作用在形參列表上载佳,用于將前臺發(fā)送過來固定格式的數據(xml格式或者json等)封裝為對應的JavaBean對象
public LoginResponse login(@RequestBody LoginForm loginForm, HttpServletRequest request, HttpServletResponse response)
2.作用在類或者方法上
①ResponseBody
把Java對象轉換成json格式的數據,并寫入到response對象的body區(qū)臀栈,返回前端蔫慧。一般在AJAX(異步獲取數據)時用
哪個頁面調用了@ResponseBody注解的接口,那么接口返回的json數據就會返回給哪個頁面(誰請求就還給誰)
此時的返回不是一個 View頁面权薯,而是一個ajax調用的返回值(Json數組)
@ResponseBody
public Student Xxx(...){...}
②RestController
作用相當于ResponseBody+Controller
③ModelAttribute
作用在方法上
在任何一次請求前姑躲,都會先執(zhí)行@ModelAttribute修飾的方法
④SessionAttributes
處理模型數據:ModelAndView、ModelMap盟蚣、Map黍析、Model
用法:
public String testModel(Model model|Map<String,Object> m) {
m.put(x,"..");
}
相當于把數據放入了request中
如何把這些數據放入session中?
-
使用@SessionAttributes(..)注解
@SessionAttributes("student") public class LoginController{...}
相當于把這個controller中通過上述方法放在session中屎开,這個session對象的名字是student