spring-boot获取form-data数据及json数据_springboot获取formdata参数-程序员宅基地

技术标签: spring-boot  json  from-data  

1. form-data参数获取

    @RequestMapping("/isChartConfig")
    public Message isChartConfig(String tableName, String title, Message message) {
        if (StringUtils.isBlank(tableName) && StringUtils.isBlank(title)) {
            Map<String, String> params = GetParamsUtils.getParamsMap();
            tableName = params.get("tableName");
            title = params.get("title");
        }
        dbService.isChartConfig(tableName, title, message);
        return message;
    }

2. form-data参数获取不到时获取json参数

public class GetParamsUtils {
    private static final Logger log = LoggerFactory.getLogger(GetParamsUtils.class);

    public static String jsonReq(HttpServletRequest request) {
        BufferedReader br;
        StringBuilder sb = null;
        String reqBody = null;
        try {
            br = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String line = null;
            sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            br.close();
            if (sb.length() < 1) return "";
            reqBody = URLDecoder.decode(sb.toString(), "UTF-8");
            reqBody = reqBody.substring(reqBody.indexOf("{"));
            return reqBody;
        } catch (IOException e) {
            log.error("获取json参数错误!{}", e.getMessage());
            return "";
        }
    }

    public static Map<String, String> getParamsMap(HttpServletRequest request) {
        Map<String, String> paramsMap = new HashMap<>();
        String json = jsonReq(request);
        if (StringUtils.isNotBlank(json)) {
            return JSONObject.parseObject(json, Map.class);
        }
        return paramsMap;
    }

    public static Map<String, String> getParamsMap() {
        Map<String, String> paramsMap = new HashMap<>();
        try {
            ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = sra.getRequest();
            String json = jsonReq(request);
            if (StringUtils.isNotBlank(json)) {
                return JSONObject.parseObject(json, Map.class);
            }
        } catch (Exception e) {
            log.error("json参数转换错误!{}", e.getMessage());
        }
        return paramsMap;
    }

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wjpong/article/details/79488036

智能推荐

SVN遇到None of the targets are working copies的正确处理方式-程序员宅基地

文章浏览阅读2.5w次。有可能有人会问我为什么还在使用svn而不是git,从现状来讲git毫无疑问是当下的翘楚,但是并不是每个公司都会顺应时代潮流,svn就是是我们公司成为了首选的版本控制工具,既来之则安之! 回到主题吧,就在我开发的过程中,一次偶然的操作导致了提交与更新都无法成功。每次得到的结果都是None of the targets are working copies!立马我想到的就是谷歌,但..._none of the targets are working copies

WPS插件开发流程(1)-程序员宅基地

文章浏览阅读3.4w次,点赞22次,收藏106次。OneKey_Lite是一款由 @只为设计 独立开发的WPS演示免费插件。在开发过程中,感恩于网上那些无私分享代码的陌生人,给我这个开发小白提供了重要的借鉴参考。于是我决定把用C#和Visual Studio开发WPS插件的每一个具体步骤分享出来,让免费分享精神继续传递下去,希望对需要的朋友提供一些帮助。(一)开发前准备1. 操作系统在Win10系统中引用WPS的dll文件可能会受到系统权限限制的..._wps插件开发

Real-Time-Voice-Cloning(github声音克隆项目演示)-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏13次。github项目地址①检查pytorch的安装②ffmpeg是做什么的,在哪里下载?怎么使用?原文地址ffmpeg是一个处理多媒体信息的框架,有视频采集、视频格式转换、视频抓图、给视频加水印等功能requirements.txtpython项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便新环境部署切换到项目目录,生成requirement.txt文件并查看③Download Pretrained Mode..

教学语音提取文本系统_教学视频语音提取文本系统tefs-程序员宅基地

文章浏览阅读258次。资料:实践!实现纯前端下的音频剪辑处理我的蓝猫被削了JS纯前端实现audio音频剪裁剪切复制播放与上传audio-sculptorffmpeg.js用 Web 实现一个简易的音频编辑器100AUDIO 免费在线音频编辑器重要:audiomassAudioMass虽然是python和go运行,但是绝大部分代码是js..._教学视频语音提取文本系统tefs

克隆你的声音,可能只需要5秒钟:MockingBird实现AI拟声 (详解)_提取音色模仿声音的软件-程序员宅基地

文章浏览阅读5.2w次,点赞70次,收藏544次。语音克隆仅需5秒之:MockingBird实现AI拟MockingBird1. 背景2. 环境搭建2.1 安装pytorch2.2 安装ffmpeg2.3 下载MockingBird源码2.4 安装requirements2.5. 下载预训练模型3. 运行MockingBrid1. 背景继“AI换脸”刷屏之后,这个AI换声技术也开始受到关注AI换声也叫AI拟声,2. 环境搭建建议使用Anaconda,可参加之前博文2.1 安装pytorch这里我直接pip安装的CPU版本pip3 in_提取音色模仿声音的软件

使用apipost工具快速生成在线接口文档_api接口文档生成 apipost-程序员宅基地

文章浏览阅读2.3k次。ApiPost是一个支持团队协作,并可直接生成文档的API调试、管理工具。它支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员不可多得的工具 。使用者不仅可以利用apiopst调试接口,还可以书写相关注释(接口文档),方便的生成可读性好、界面美观的在线接口文档。本文主要包含以下内容:介绍ApiPost工具,它能做什么下载、安装的方法一些常用的操作介绍一些使用技巧前言:apipost能做什么?ApiPost是一个支持团队协作,并可直接生成文档的AP_api接口文档生成 apipost

随便推点

基于arduino和openmv的智能小车设计制作流程_arduino和openmv跟随小车-程序员宅基地

文章浏览阅读4k次,点赞9次,收藏43次。arduino与openmv的智能物流小车一、购买模块组件准备阶段1、ArduinoMAGE2560+扩展板使用这个当做主控板,加上扩展板已经满足了所有需求,主要是也很便宜,唯一不足的是就是扩展板装上的时候,扩展板的电源接口的引脚有时候会与MAGE2560 的数据接口碰上,导致板子短路,当初因为这个换了好几块板子。2、openmvopenmv主要是用来扫码和识别物料颜色,我用的型号是openmv4 H7,识别很灵敏,但是换不同场景识别物料的时候一定要记得调节物料颜色阈值,不然有时候会识别不到。3_arduino和openmv跟随小车

.net用BouncyCastle进行签名&加解密_.net bouncycastle-程序员宅基地

文章浏览阅读1.4w次。.net用BouncyCastle进行签名&加解密_.net bouncycastle

sklearn.metrics.f1_score 使用方法-程序员宅基地

文章浏览阅读2.8w次,点赞14次,收藏74次。原网站:sklearn官网使用sklearn计算 F1 scoresklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')计算F1分数,也称为平衡F分数或F测度F1分数可..._metrics.f1_score

python 画子图+双坐标轴图_python 双坐标轴-程序员宅基地

文章浏览阅读1.5k次。python 画子图+双坐标轴图_python 双坐标轴

解决包含 GitHub Actions Workflow 的分支无法推送的问题_refusing to allow an oauth app to create or update-程序员宅基地

文章浏览阅读1.5k次。问题试图向 GitHub 推送一个分支的时候,出现错误 refusing to allow an OAuth App to create or update workflow {0} without workflow scope。这个错误是说,因为 OAuth 的应用没有指定 workflow 范围,所以无法推送带有更新 workflow 的分支。虽然我实际上没有对 workflow 做任何更新,但也被拒绝了。所以这个问题必须直接解决,绕不开。git.exe push self master:t/w_refusing to allow an oauth app to create or update workflow `.github/workflo

MySQL:向已有数据表中插入新的一列数据_mysql新增一列如何插入数据-程序员宅基地

文章浏览阅读6.9w次,点赞47次,收藏143次。一、需求有两个表格,test和test2如下所示:mysql&gt; select * from test;+------+------+------------+| data | id | timestamp |+------+------+------------+| 300 | 3 | 1536292800 || 200 | 2 | 1536292..._mysql新增一列如何插入数据