使用controller传boolean形式值
controller传boolean形式值
@GetMapping("/check-cart") public List<CartViewDto> checkCart(@RequestParam(value = "requirePrice", required = false) boolean requirePrice) { return service.checkCart(requirePrice); }
controller传入boolean类型的值,参数为非必填
我们可以传三种类型
- http://端口:ip/cart/check-cart
- http://端口:ip/cart/check-cart?requirePrice=true
- http://端口:ip/cart/check-cart?requirePrice=false
这三种都可以。
其他如:
- http://端口:ip/cart/check-cart?requirePrice=
- http://端口:ip/cart/check-cart?requirePrice=111
都会报错
controller层接收各种参数和文件
在构建一个系统时,前端和后台总是需要对接,在springmvc架构里,这种对接一般发生在Controller层中。方法参数绑定首先支持Java所有基本类型(包括: byte、short、int、long、float、double、char、string、boolean),以及基本类型对应封装高级类(包括:StringBuilder、StringBuffer),也包含 了我们自己定义的各种JavaBean类型。接受的方式有很多,但是也要在接受数据时也要体现面向对象的思想。
简单传入
以用户登陆为例,在前台传入数据,做一个传入的例子。
前台传入数据的形式为 username=10&password=10
<html> <head> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script> //简单形式的传参 $.ajax({ type: "POST", url: "http://localhost:8080/test/requesetParamGet", contentType: "application/x-www-form-urlencoded", data:"username=10&password=10", dataType: "json", success: function (result) { if (result.code == 0) { console.log(result) } else { } } }); </script> </head> </html>
在这种情况下,如何在后台进行接受呢?可以采用如下的方法。
@ResponseBody @RequestMapping("/simple") public R list(String name,String age){ System.out.println("name:"+name+",age:"+age); return R.ok(); }
当然也可以采用HttpServeletRequest的形式进行接受
@ResponseBody @RequestMapping("/simple") public R requestGet(HttpServletRequest request){ System.out.println("reqname:"+request.getParameter("name")+",reqage:"+request.getParameter("age")); return R.ok(); }
以json对象的形式传入
还是以用户登陆为例,在前台传入数据,做一个传入的例子。
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script> //class获取,需要用对象的形式 var s={ name:'liMin', age:'10' } $.ajax({ type: "POST", url: "http://localhost:8080/test/classGet", contentType: "application/json", data:JSON.stringify(s), dataType: "json", success: function (result) { if (result.code == 0) { console.log(result) } else { } } }); </script>
这种情况下,controller层建议使用对象的形式进行接受。
@ResponseBody @RequestMapping("/classGet") public R classGet(@RequestBody TestEntity testEntity){ System.out.println("className:"+testEntity.getName()+"classAge:"+testEntity.getAge()); return R.ok(); }
在传参时,需要添加注解@RequsetBody用来接收contentType为application/json的传入对象。如果传过来的时contentType头为application/x-www-form-urlencoded,那么建议使用另外一个注解接受@RequestParam来接受。
@RequestMapping("/requesetParamGet") public R addUser6(@RequestParam("username") String username,@RequestParam("password") String password) { System.out.println("username is:"+username); System.out.println("password is:"+password); return R.ok(); }
如果啥都不写,那么就得不到这个对象,接受到的对象为NULL。
当然,你可以不接受为一个对象,可以把传过来的json对象转化为json字符串,然后用各种工具进行解析,也是可以的。当然也是要加上@RequestBody或者@RequestParam的。
@ResponseBody @RequestMapping("/stringGet") public R stringGet(@RequestBody String string){ System.out.println("String:"+string); return R.ok(); }
文件传输
在项目中,文件上传有别于对象的上传。
<html> <head> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script> function savePic(){ var formData = new FormData($( "#uploadPic" )[0]); var ajaxUrl = "http://localhost:8080/test/fileUpload"; //alert(ajaxUrl); //$('#uploadPic').serialize() 无法序列化二进制文件,这里采用formData上传 //需要浏览器支持:Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。 $.ajax({ type: "POST", //dataType: "text", url: ajaxUrl, data: formData, //async: false, //cache: false, contentType: false, //上传文件 processData: false,//序列化处理,默认为true,上传文件需要改成false success: function (data) { alert(data); }, error: function(data) { alert("error:"+data.responseText); } }); return false; } function jiance(){ var formData = new FormData(); formData.append() } </script> </head> <body> <form id="uploadPic" action="" enctype="multipart/form-data"> <input type="file" name="multipartFile" id="file"> <a href="javascript:savePic();" class="btn green"> 提交 </a> <a href="javascript:jiance();" class="btn green"> jiance </a> </form> </body> </html>
在后台接受参数的例子:
@RequestMapping("/fileUpload") @ResponseBody public R upload(MultipartFile multipartFile){ String filePath=""; if(!multipartFile.isEmpty()){ System.out.println(multipartFile.getOriginalFilename()); } return R.ok().put("filePath",filePath); }
@RequestMapping("/fileUpload2") @ResponseBody public R upload2(@RequestParam("multipartFile") MultipartFile multipartFile){ String filePath=""; if(!multipartFile.isEmpty()){ System.out.println(multipartFile.getOriginalFilename()); } return R.ok().put("filePath",filePath); }
@RequestMapping("/fileUpload3") @ResponseBody public R upload3(@RequestBody MultipartFile multipartFile){ String filePath=""; if(!multipartFile.isEmpty()){ System.out.println(multipartFile.getOriginalFilename()); } return R.ok().put("filePath",filePath); }
这里需要注意一点,文件名必须和参数名保持一致,在本项目中file文件的名字必须为multipartFile。
原文出处:https://blog.csdn.net/starkpan/article/details/102817818
相关文章
Spring Boot项目@RestController使用重定向redirect方式
这篇文章主要介绍了Spring Boot项目@RestController使用重定向redirect方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02- 这篇文章主要给大家介绍了关于阿里规范:为何boolean类型变量命名禁用is开头的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
C# MVC模式中应该怎样区分应用程序逻辑(Controller层)和业务逻辑(Model层)?
这篇文章主要介绍了C# MVC模式中应该怎样区分应用程序逻辑(Controller层)和业务逻辑(Model层)?,这也小编做.NET项目时经常思考和让人混乱的一个问题,这篇文章写的挺好,一下清晰了许多,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了解决JS无法调用Controller问题的方法,需要的朋友可以参考下...2016-01-05
DTO 实现 service 和 controller 之间值传递的操作
这篇文章主要介绍了DTO 实现 service 和 controller 之间值传递的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22- 这篇文章主要介绍了Swagger2匹配多个controller代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
springboot @Controller和@RestController的区别及应用详解
这篇文章主要介绍了springboot @Controller和@RestController的区别及应用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-03ASP.NET Core MVC如何实现运行时动态定义Controller类型
这篇文章主要介绍了ASP.NET Core MVC如何实现运行时动态定义Controller类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22解读ASP.NET 5 & MVC6系列教程(10):Controller与Action
这篇文章主要介绍了ASP.NET 5 Controller与Action的定义和使用,需要的朋友可以参考下...2021-09-22controller接口跳转到另一个controller接口的实现
这篇文章主要介绍了controller接口跳转到另一个controller接口的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02使用Spring的拦截器监测每个Controller或方法的执行时长
这篇文章主要介绍了使用Spring的拦截器监测每个Controller或方法的执行时长,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-28- 这篇文章主要介绍了浅谈springMVC中controller的几种返回类型,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-27
使用restTemplate远程调controller路径取数据
这篇文章主要介绍了使用restTemplate远程调controller路径取数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-19拦截器获取request的值之后,Controller拿不到值的解决
这篇文章主要介绍了拦截器获取request的值之后,Controller拿不到值的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-28Codeigniter控制器controller继承问题实例分析
这篇文章主要介绍了Codeigniter控制器controller继承问题,以简单实例形式分析了CodeIgniter中针对控制器controller继承的实现与使用方法,需要的朋友可以参考下...2016-01-21ASP.NET Core Controller与IOC结合问题整理
在本篇文章里小编给大家整理了一篇关于ASP.NET Core Controller与IOC结合问题整理内容,有需要的朋友们可以学习下。...2021-09-22ASP.NET Core对Controller进行单元测试的完整步骤
这篇文章主要给大家介绍了关于ASP.NET Core对Controller进行单元测试的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2021-09-22AngularJS控制器controller正确的通信的方法
AngularJS中的controller是个函数,用来向视图的作用域($scope)添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为...2016-01-26- 本文章来讲述一下关于mvc中controller类教程,通过上两节我们知道 程序通过单一入口文件的route类决定了 唯一的moudle, conttoller, action,并在最后执行了 ...2016-11-25
- 这篇文章主要给大家介绍了关于iOS如何获取最顶层ViewController的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08