springboot Get请求参数转对象

2017-12-13  本文已影响0人  时之令

springboot的get请求可以通过多种方式获取参数,但是如果一个get请求的参数太多,通过 下面这种方式:

@GetMapping("/getobj")
public Object getObjByParam(@RequestParam("name") String name,@RequestParam("sex")String sex,@RequestParam("name")int age){
String str = "test = " + age+" name = "+name +" sex = "+sex;
logger.info(str);
return age;
}

显然给代码维护和阅读带来不便,可以通过构造一个对象来简化参数的接收方式如下:

@GetMapping("/getobj")
public Object getObj(Test test){
logger.info("test = " + test);
return test;
}
public static class Test{

    private String name;
    private String sex;
    private int age;

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getSex() {
       return sex;
   }

   public void setSex(String sex) {
       this.sex = sex;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   @Override
   public String toString() {
       return "Test{" +
               "name='" + name + '\'' +
               ", sex='" + sex + '\'' +
               ", age=" + age +
               '}';
   }

}
通过这种方式,参数中就可以直接将多个参数通过getter,setter方法注入到对象中去。POST方式更不用说了,肯定是支持的。个人建议,在三个参数一下,可以通过基本类型接收参数,多个参数,用一个对象接受比较方便一些。

完整的代码如下:
请求:http://localhost:8112/regula/test/getobj?name=zhang&age=28&sex=

controller:
/**

@GetMapping("/getobj")
public Object getObjByParam(@RequestParam("name") String name,@RequestParam("sex")String sex,@RequestParam("name")int age){
    String str = "test = " + age+" name = "+name +" sex = "+sex;
    logger.info(str);
    return  age;
}

public static class Test{

    private String name;
    private String sex;
    private int age;

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getSex() {
       return sex;
   }

   public void setSex(String sex) {
       this.sex = sex;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   @Override
   public String toString() {
       return "Test{" +
               "name='" + name + '\'' +
               ", sex='" + sex + '\'' +
               ", age=" + age +
               '}';
   }

}
}

上一篇 下一篇

猜你喜欢

热点阅读