zoukankan      html  css  js  c++  java
  • SpringMVC常用注解

    1.@RequestParam

      1)作用:把请求中指定名称的参数给控制器中的形参赋值

      2)属性:value(name):请求参数中的名称

         required:请求参数中是否必须提供此参数,默认值:true,表示必须提供该参数,若不提供,将会报错

          @RequestMapping("/testRequestParam")
          public String testRequestParam(@RequestParam(value="name") String username){
              System.out.println(username);
              return "success";
          }
          访问该方法时,请求中的参数名称必须为"name",不传或者传其他参数名的参数将会报错
          访问示例:localhost:8080/testRequestParam?name=Kavins(参数必须存在且参数名为name)
    2.@RequestBody
      1)作用:用于获取请求体内容,直接使用得到的是key=value&key=value...结构的数据,get请求方式不适用
      2)属性:required:是否必须有请求体,默认值是true,当取值为true时,get请求方式会报错,如果值为false,get请求得到的是null
           @RequestMapping("/testRequestBody")
        public String testRequestBody(@RequestBody String body){
            System.out.println(body);
            return "success";
        }        
        
        如图提交post请求
       方法中的参数body获取的为post请求的整个请求体(姓名+年龄),而不是指其中的一个参数
       后台打印结果为:username=Kavins&age=18
    3.@PathVaribale
    1)作用:用于绑定url中的占位符,例如:请求url中/delete/{id},{id}就是url占位符,url支持占位符是spring3.0之后加入的,是SpringMVC支持rest风格url的一个重要标志
     2)属性:value:用于指定url中占位符名称
         required:是否必须提供占位符,默认为true
        @RequestMapping("/testPathVariable/{sid}")
        public String testPathVariable(@PathVariable(value="sid") String id){
            System.out.println(id);
            return "success";
        }
        访问示例:http://localhost:8080/springmvc/anno/testPathVariable/100
        后台将会打印100
    4.@RequestHeader
      1)作用:用于获取请求消息头
      2)属性:value:提供消息头名称
          required:是否必须有此消息头,默认值为true
        @RequestMapping("/testRequestHeader")
        public String testRequestHeader(@RequestHeader(value="Accept") String header){
            System.out.println(header);
            return "success";
        }
        打印结果:text/html, application/xhtml+xml, image/jxr, */*
    5.@ModelAttribute
      1)作用:该注解是SpringMVC4.3版本以后新加入的,他可以用来修饰方法和参数
          修饰方法:表示当前方法会在控制器的方法之前先执行,他可以修饰没有返回值的方法,也可以修饰有具体返回值的方法.
          参数:获取指定的数据给参数赋值
      2)属性:value:用于获取数据的key,key可以使POJO类的属性名称,也可以是map结构的key
      修饰有返回值方法

        @RequestMapping("/testModelAttribute")
        public String testModelAttribute(User user){
            System.out.println("testModelAttribute执行了");
            System.out.println(user);
            return "success";
        }
    
        /**
         * 该方法会先执行(有返回值),返回值会传给控制器方法的user参数
         */
        @ModelAttribute
        public User showUser(String username,Integer age){
            System.out.println("showUser执行了...");
            //通过用户查询数据库(模拟)
            User user = new User();
            user.setUsername(username);
            user.setAge(age);
            user.setDate(new Date());
            return user;
        }
    
    
        点击提交后台打印:

            showUser执行了...
         testModelAttribute执行了
         User{username='Kavins', age=18, date=Sat Feb 15 19:15:34 CST 2020}

         //修饰没有返回值的方法:
         @RequestMapping("/testModelAttribute")
         public String testModelAttribute(@ModelAttribute("userMap") User user){
            System.out.println("testModelAttribute执行了");
            System.out.println(user);
            return "success";
        }
         //该方法会先执行(没有返回值,将user封装在了key值为userMap的map中,在控制器方法的参数中使用@ModelAttribute("userMap")得到user对象)
        @ModelAttribute
        public void showUser(String username,Integer age,Map<String,User> map){
            System.out.println("showUser执行了...");
            //通过用户查询数据库(模拟)
            User user = new User();
            user.setUsername(username);
            user.setAge(age);
            user.setDate(new Date());
            map.put("userMap",user);
        }
          打印结果:

            showUser执行了...
             testModelAttribute执行了
             User{username='Kavins', age=18, date=Sat Feb 15 19:20:02 CST 2020}

        

     
     

        
    
    
     


     
    
    
  • 相关阅读:
    Eclipse的Debug教程
    Java面向对象--关键字(package、import、this)
    Java面向对象--JavaBean类&UML类图
    Java面向对象--构造器(构造方法)
    Java面向对象--属性和方法
    python | 基础知识与基本概念
    post登录 jsessionid 以及cookie 传递
    JMeter学习-017-java.net.SocketException: Permission denied: connect 解决方案
    python自建模块显示说明与详情
    在linux下pycharm无法输入中文
  • 原文地址:https://www.cnblogs.com/kavins/p/12315757.html
Copyright © 2011-2022 走看看