springmvc获取请求参数

1.在无注解下获取参数

在没有注解的情况下, SpringMVC 也可以获取参数,且参数允许为空,唯一的要求是参数名称
和HTTP 请求的参数名称保持一致

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/get")
    @ResponseBody
    public User get(Long id){
        return userService.getUser(id);
    }


}

启动Spring Boot 应用后,在浏览器中请求URL :

http://localhost:8080/user/get?id=1

2.使用@ RequestParam 获取参数

在前后台分离的趋势下,前端的命名规则可能与后端的规则不同,这时需要把前端的参数与后
端对应起来。Spring MVC 提供了注解@RequestParam 来确定前后端参数名称的映射关系

 @GetMapping("/annotation")
    @ResponseBody
    public Map requestParam(@RequestParam("user_name")String userName,
                            @RequestParam("password")String pwd,
                            @RequestParam(value = "note",required = false)String note){
        Map map = new HashMap();
        map.put("success","ok");
        return map;
    }

在浏览器地址栏输入http://localhost:8080/my/annotation?user_name=james&password=2,就能够看到请求的结果了

在默认的情况下@RequestParam 标注的参数是不能为空的,为了让它能够
为空,可以配置其属性required 为false

3.传递数组

    @GetMapping("/requestArray")
    @ResponseBody
    public Map requestArray(int[] a){
        Map map = new HashMap();
        map.put("intarray",a);
        return map;
    }

浏览器输入http://localhost:8082/user/requestArray?a=1,2,3,4,5

4.传递JSON

   @RequestMapping("/save")
    @ResponseBody
    public User save(@RequestBody User user){
        userService.saveUser(user);
        return user;
    }

5.通过URL 传递参数

在一些网站中,提出了REST 风格,这时参数往往通过URL 进行传递。

可以通过处理器映射和注解@PathVariable 的组合获取URL 参数。首先通过处理器映射可以定位参数
的位置和名称,而@PathVariable 则可以通过名称来获取参数

 @GetMapping("/show/{id}")
    @ResponseBody
    public Map requestArray(@PathVariable("id") String id){
        Map map = new HashMap();
        map.put("id",id);
        return map;
    }

浏览器输入 http://localhost:8082/user/show/1

6.获取格式化参数

对日期和数字类型的转换注解进行处理,分别是@ D ateTimeF ormat 和@NumberFormat o 其中
@DateTimeFormat 是针对日期进行格式化的,@Numbe rF ormat 则是针对数字进行格式化的。

    @GetMapping("/format")
    @ResponseBody
    public Map format(@DateTimeFormat(iso= DateTimeFormat.ISO.DATE)Date date,
                      @NumberFormat(pattern = "#,###.##")Double number){
        Map map = new HashMap();
        map.put("date",date);
        map.put("number",number);
        return map;
    }

浏览器输入  http://localhost:8082/user/format?date=2019-04-15&number=1,235,564.123

7.自定义参数转换规则

Converter 是一对一的转化器, 也就是从一种类型转换为另外一种类型

/**
 * 自定义字符串狗狗转换器
 */
@Component
public class String2DogConverter implements Converter<String,Dog>{
    @Nullable
    @Override
    public Dog convert(String s) {
        String[] strs = s.split("-");
        String name = strs[0];
        String owner = strs[1];
        Dog dog = new Dog();
        dog.setName(name);
        dog.setOwner(owner);
        return dog;
    }
}
@Data
public class Dog implements Serializable {

    private static final long serialVersionUID = 2019043013327777777L;

    private String name;

    private String owner;
}
   @GetMapping("/getDog")
    @ResponseBody
    public Dog getDog(Dog dog){
        return dog;
    }

浏览器输入  http://localhost:8082/user/getDog?dog=yy-curry

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值