基于Controller层的注解
1、RequestMapper
加在方法上, 给处理用户请求的方法绑定一个url
属性: value/path: 绑定的url method: 默认就是get/post都能处理, 枚举类型, RequestMethod @RequestMapping(value="/sayHello.action",method = RequestMethod.GET)
加在类上, 作为url上一级目录, 窄化请求
@Controller @RequestMapping("/user")//窄化请求 url,项目名+user+sayHello.action public class UserController {
2、@GetMapping -->简化 (method = RequestMethod.GET)
在方法上, 给方法绑定一个url,但是处理的请求方式只能get
3、@PostMapping
在方法上, 给方法绑定一个url,但是处理的请求方式只能post
4、@RequestParam
请求参数与方法参数进行映射
如果前端没有传递这个相同name的数据类型, springMVC给参数赋的值是null,
如果参数是基本数据类型, 会抛异常, 因为, 基本数据类型不能接收null
如果请求参数的name与方法的参数名不一样, 想进行映射: 使用@RequestParam
属性: >value/name: 请求参数的name >defaultValue: 默认值, 如果请求参数没有这个name值, 给方法参数赋默认值 public ModelAndView findUser(@RequestParam(name = "uid",defaultValue = "33")int id) { >required: boolean类型, true, 表示请求参数必须有这个值,如果没有抛异常: 默认值false , False: 不是必须. 请求参数可有可无 public ModelAndView findUser(@RequestParam(name = "uid",required = true)int id) {
5、 @ModelAttribute
加在方法上, 表示这个方法. 在每一次处理方法执行之前执行
如果方法有返回值, 把这个返回值的结果保存Model(默认是:request域), key就是注解的name参数的值
@ModelAttribute(name = "user") public User test1() { User user = new User(); user.setId(1048); user.setUsername("王五"); return user; }
加在参数上, 表示从Model中获取对应name的值, 赋值给参数
@RequestMapping("/fun3.action") // 表示user参数 获取的Model的name为user的值 // 如果前端没有传递数据, 参数从Model中获取, 如果Model也没有, 赋值为null public ModelAndView fun3(@ModelAttribute("user") User user) { System.out.println("fun3...."); ModelAndView modelAndView = new ModelAndView(); System.out.println(user); modelAndView.setViewName("hello"); return modelAndView; }
6、@SessionAttributes
加在Controller类上, 把model(request域)中的属性,拷贝一份存放到session域
7、@SessionAttributes(names = {"user"})
把Controller类上, 把model(request域)中的name为user的属性,拷贝一份存放到session域
@Controller @RequestMapping("/test") @SessionAttributes(names = {"user","hello"}) public class TestController {
8、@PathVariable: 映射,加在参数上, 在RestFull风格使用到,把RestFull风格的url占位符映射到参数
9、@RestController: