网站首页   文章专栏   SpringBoot之参数校验详解
SpringBoot之参数校验详解
原创 2020-01-28 15:16:53 ApeNixX 357浏览 SpringBoot

在本博客的其中一个方法上使用了@Validated注解来获取url上的参数,但是因为是url上参数,有可能被恶意破坏数据构,比如超长的字符串,各种乱七八糟的字符,小数。。。。等等情况,其实可以设置点东西,就能防止这种情况了,随便再学习下springboot的参数校验。
@GetMapping("/find/{id}/detail")
public ModelAndView findSomeOne(Map<String, Object> map,@PathVariable("id") Integer id){
 
     use id do something...
 
}

比如上述代码中,在GetMapping的路径中有个变量id,在入参中获取到传递进来,注意这里的id为Integer类型的,也就是说路径中的参数只能为纯数字,且不能超出Integer范围,当有人故意将id改成字符串,或者小数,超出范围的数字都会使得代码报错。

那么怎么办呢,如果将Integer 改成String,那么入参不管是什么都能进来,但是这个数据对不对就又不一定了,只能在代码里面再去解析判断,很麻烦,@Validated还有一种用法就是,在路径中做出限制,用正则表达式限制其形式,这样当参数不满足正则表达式的话,不合法的URL则不会被处理,直接由框架返回404Not Found。

@GetMapping("/find/{id:[0-9_]{1,5}+}/detail")
public ModelAndView findSomeOne(Map<String, Object> map,@PathVariable("id") Integer id){
 
     use id do something...
 
}

这样就限制id只能是1-5位的纯数字,其他情况则被框架直接返回404.

对表单的校验,方法参的校验,自定义校验,非空校验后面有空再写。

版权声明:本文由ApeNixX原创出品,转载请注明出处!

本文链接:https://www.apenixx.top/article/details/1580208774


  SpringBoot    url参数 

赞助本站,网站的发展离不开你们的支持!
来说两句吧
最新评论
  • 不落阁
    不落阁
    我为大家做了模拟留言与回复!试试吧!

    Absolutely
    Absolutely这是用户回复内容

    2017-03-18 18:26回复

    Absolutely
    Absolutely 回复 不落阁这是第二个用户回复内容

    2017-03-18 18:26回复