neweastsun 2020-06-16
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:
@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象进行绑定。加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据。