Ⅰ、关于映射的注解
映射的概念
我对映射的理解:映射就是路径和接口的对应关系。一个相对路径,通过注解形式加在接口上,前端去请求这个地址,就相当于调用了相应的接口。
以下面controller代码为例,前端想请求Controller执行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
作用在形参列表上,用于将前台发送过来固定格式的数据(xml格式或者json等)封装为对应的JavaBean对象
public LoginResponse login(@RequestBody LoginForm loginForm, HttpServletRequest request, HttpServletResponse response)
2.作用在类或者方法上
①ResponseBody
把Java对象转换成json格式的数据,并写入到response对象的body区,返回前端。一般在AJAX(异步获取数据)时用
哪个页面调用了@ResponseBody注解的接口,那么接口返回的json数据就会返回给哪个页面(谁请求就还给谁)
此时的返回不是一个 View页面,而是一个ajax调用的返回值(Json数组)
@ResponseBody
public Student Xxx(...){...}
②RestController
作用相当于ResponseBody+Controller
③ModelAttribute
作用在方法上
在任何一次请求前,都会先执行@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