使用controller传boolean形式值

 更新时间:2022年03月18日 15:01:15   作者:starkpan  
这篇文章主要介绍了使用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。

相关文章

  • 在Java8中构建Stream流的多种方式详解

    在Java8中构建Stream流的多种方式详解

    当我们处理集合数据时,往往需要对其进行各种操作,如过滤、映射、排序、归约等,在 Java 8 中引入的 Stream 流为我们提供了一种更加简洁和灵活的方式来处理数据,本文将介绍如何基于 Stream 构建流,为你展示创建和操作流的多种方法
    2023-08-08
  • spring data jpa使用详解(推荐)

    spring data jpa使用详解(推荐)

    这篇文章主要介绍了spring data jpa使用详解(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

    java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

    本篇文章主要通过代码实例对java自带命令行工具jmap、jhat与jinfo的使用做出了详解,需要的朋友可以参考下
    2017-04-04
  • Java自定义比较器实现中文排序

    Java自定义比较器实现中文排序

    这篇文章主要介绍了Java自定义比较器实现中文排序,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Spring Boot 实现配置文件加解密原理

    Spring Boot 实现配置文件加解密原理

    这篇文章主要介绍了Spring Boot 实现配置文件加解密原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Redisson分布式信号量RSemaphore的使用超详细讲解

    Redisson分布式信号量RSemaphore的使用超详细讲解

    这篇文章主要介绍了Redisson分布式信号量RSemaphore的使用,基于Redis的Redisson的分布式信号量RSemaphore采用了与java.util.concurrent.Semaphore相似的接口和用法
    2023-02-02
  • Java web xml文件读取解析方式

    Java web xml文件读取解析方式

    这篇文章主要介绍了Java web xml文件读取解析方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • SpringBoot整合Gson 整合Fastjson的实例详解

    SpringBoot整合Gson 整合Fastjson的实例详解

    这篇文章主要介绍了SpringBoot整合Gson 整合Fastjson的实例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot使用OpenCV示例总结

    SpringBoot使用OpenCV示例总结

    这篇文章主要介绍了SpringBoot使用OpenCV示例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 将Java程序的输出结果写入文件方法实例

    将Java程序的输出结果写入文件方法实例

    这篇文章主要给大家介绍了关于将Java程序的输出结果写入文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论