使用controller传boolean形式值
作者:starkpan 发布时间:2023-11-28 23:05:33
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


猜你喜欢
- 本文实例讲述了C#定义简单的反射工厂用法。分享给大家供大家参考。具体分析如下:首先,定义一个水果抽象类,代码如下:class Fruit{
- Jetty和tomcat的比较Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。架
- 最近设计要求要一个圆形进度条渐变的需求:1.画圆形进度条2.解决渐变最终实现效果代码package com.view;import andr
- 容器适配器我们可以看出,栈中没有空间配置器(内存池),而是适配器适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目
- 1. 选择恰当的日志级别常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日
- 一、介绍1、"Lambda表达式"是一个特殊的匿名函数,简化了匿名委托的使用,是一种高效的类似于函数式编程的表达式,La
- 本文实例讲述了C#分布式事务的超时处理的方法。分享给大家供大家参考。具体分析如下:事务是个很精妙的存在,我们在数据层、服务层、业务逻辑层等多
- @Configuration注解的类:/** * @Description 测试用的配置类 * @Author 弟中弟 * @CreateT
- 1、什么是Java反射机制?在程序运行中动态地获取类的相关属性,同时调用对象的方法和获取属性,这种机制被称之为Java反射机制下面给出一个反
- 1、检测权限因为dump系统lsass内存和sam注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。public static
- 没有阿里云数据库的可以买个最便宜的,我是新用户9.9元买了一个1.买到后点击左上角的工作台2.3. 4. 5.6.7.8
- 在上一讲中,我们对Spring的基本使用进行了一个简单的回顾,接下来,我们就来看一下Spring核心功能结构。Spring核心功能结构Spr
- 茫茫人海千千万万,感谢这一秒你看到这里。希望我的面试题系列能对你的有所帮助!共勉!愿你在未来的日子,保持热爱,奔赴山海!Java基础知识(继
- 前言Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中
- 在Android 4.4系统中,外置存储卡(SD卡)被称为二级外部存储设备(secondary storage),应用程序已无法往外置存储卡
- 安全发布对象在静态初始化函数中初始化一个对象引用将对象的引用保存到volatile类型域或者AtomicReference对象中将对象的引用
- 爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好
- 文章描述以下主要还是使用到了ffmpeg命令,分别实现了给视频添加图片水印以及文字水印。开发环境.NET Framework版本:4.5开发
- 回顾:上一篇文章总结了影院售票系统核心部分-售票,整个项目也就完成了2/3了,需求中也要求了对销售信息的保存,今天就继续总结销售信息的保存以
- 虽然说模块通信、路由协议在Android已经不新鲜了,但是如果脱离了那些优秀的开源库我们从零开始自己造一个库,有时候重复造轮子会让自己对所谓