博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC注解@RequestParam全面解析
阅读量:4148 次
发布时间:2019-05-25

本文共 1619 字,大约阅读时间需要 5 分钟。

项目中用到,才想起上次面友金所时面试官问的控制层获取参数的另一种方式,当时还给懵逼了,因为之前没见过!

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解 

一、基本使用,获取提交的参数 
后端代码: 

Java代码  
  1. @RequestMapping("testRequestParam")    
  2.    public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) {    
  3.     System.out.println(inputStr);  
  4.       
  5.     int inputInt = Integer.valueOf(request.getParameter("inputInt"));  
  6.     System.out.println(inputInt);  
  7.       
  8.     // ......省略  
  9.     return "index";  
  10.    }     


前端代码:
 

Html代码  
  1. <form action="/gadget/testRequestParam" method="post">    
  2.      参数inputStr:<input type="text" name="inputStr">    
  3.      参数intputInt:<input type="text" name="inputInt">    
  4. </form>  


前端界面:
 

 


执行结果:
 

test1 

123 


可以看到spring会自动根据参数名字封装进入,我们可以直接拿这个参数名来用
 


二、各种异常情况处理
 

1、可以对传入参数指定参数名
 

Java代码  
  1. @RequestParam String inputStr  
  2. // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错  
  3. @RequestParam(value="aa") String inputStr  

错误信息:
 

HTTP Status 400 - Required String parameter 'aa' is not present
 


2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
 

Java代码  
  1. // required=false表示不传的话,会给参数赋值为null,required=true就是必须要有  
  2. @RequestMapping("testRequestParam")    
  3.     public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request)  


3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,这个不可以
 

Java代码  
  1. @RequestMapping("testRequestParam")    
  2.    public String filesUpload(@RequestParam(value="aa", required=true) String inputStr,   
  3.         @RequestParam(value="inputInt", required=falseint inputInt  
  4.         ,HttpServletRequest request) {    
  5.       
  6.     // ......省略  
  7.     return "index";  
  8.    }  


解决方法:
 

    
“Consider declaring it as object wrapper for the corresponding primitive type.”建议使用包装类型代替基本类型,如使用“Integer”代替“int”

转载地址:http://pytti.baihongyu.com/

你可能感兴趣的文章
Gradle源码全解析,威力加强版
查看>>
HTTPS面试常问全解析,文末领取面试资料
查看>>
kotlin入门,闭关在家37天“吃透”这份345页PDF,完整PDF
查看>>
kotlin协程原理,免费Android高级工程师学习资源,威力加强版
查看>>
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职
查看>>
深入解析android核心组件和应用框架,Android面试题及解析
查看>>
温故而知新!微信小程序的事件处理,吊打面试官系列!
查看>>
灵魂拷问!Android性能优化之APK优化,系列篇
查看>>
焦虑的移动互联网开发者如何破局?BAT大厂面试总结
查看>>
爆赞!Android岗大厂面试官常问的那些问题,论程序员成长的正确姿势
查看>>
爆赞!Android岗大厂面试官常问的那些问题,论程序员成长的正确姿势
查看>>
爱了爱了!Android平台HTTPS抓包解决方案及问题分析,面试必问
查看>>
爱了爱了!Android开发者值得深入思考的几个问题,送大厂面经一份!
查看>>
牛笔了!Android黑科技保活实现原理揭秘,深度好文
查看>>
牛笔了!这些面试官常问的开发面试题你都掌握好了吗?看这一篇就够了!
查看>>
看完不会的来打我!Android免打包多渠道统计如何实现?面试必会
查看>>
看完全都会了!Android开发热门前沿知识,积累总结
查看>>
看完吊打面试官!海量算法高频面试题精编解析,附带学习经验
查看>>
看完豁然开朗!一线互联网大厂面试真题系统收录!社招面试心得
查看>>
真是经典中的经典!Android开发你需要了解的那些事,深度好文
查看>>