SpringMVC的其他注解

neweastsun 2020-06-16

基于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) {

SpringMVC的其他注解

SpringMVC的其他注解

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: 

相关推荐