Springmvc加与不加@requestparam的区别

小编 398

Springmvc加与不加@requestparam的区别在于:加上@requestparam,表示必须带有参数;而不加@requestparam,表示可带参数也可不带参数。不过,如果加了@requestparam,并将它的required设置为false,就和不加@requestparam没有什么区别了。

1.加与不加@requestparam的区别

加上@requestparam代表必须带有参数,也就是说你直接输入“localhost:8080/list”会报错,不会执行方法;只能输入“localhost:8080/list?parentId=?”才能执行相应的方法。

如果不加@requestparam,代表可带参数也可不带参数,即输入“localhost:8080/list 以及localhost:8080/list?parentId=? ”方法都能执行。

但是,如果设置@RequestParam 里面的required为false(默认为true代表必须带参数) 这样就跟不加@requestparam没有区别了。

2.使用@RequestParam的注意事项

@RequestParam可以解决前后端定义的参数名不一致的问题。例如前端传入的参数名是name,后端方法接收的参数名是userName,这时可以通过@RequestParam指定value的值为name,实现name与userName的映射。

但如果后端使用的是基本数据类型来接收参数,那么一定要设置required=false,并且要设置一个默认值。因为考虑到前端没有传值的情况,如果此时仅仅设置了required=false,会报500错误(下图异常)因为基本数据类型无法接收null。

如果后端使用的是引用数据类型,则无需设置required=false和defaultValue,因为即使前端没有传入参数值,引用数据类型是可以接收null的。

延伸阅读

什么是Springmvc

Springmvc是spring后续的一个产品,是spring的一个子项目。它是spring在表述层一共的一套完整的解决方案,在表述层经历Struct、WebWord、Struct2等诸多产品更迭之后,SpringMVC是优选为JavaEE的表述层开发的优选方案。

SpringMVC的特点如下:

  • Spring家族的原生产品,与IOC等基础设施无缝衔接;
  • 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理;
  • 表述层的其它细分领域需要解决的问题全方位覆盖,提供一整套的解决方案;
  • 代码清新简洁,大幅度提升工作效率;
  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能提供配置文件即可;
  • 性能卓越,尤其适合现代大型或超大型项目。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部