当前位置:首页 > 科技  > 软件

优化Spring Boot中HttpServletRequest参数处理的实用工具类

来源: 责编: 时间:2023-11-30 09:30:10 182观看
导读在Spring Boot应用中,我们经常需要对HttpServletRequest中的参数进行处理,以满足特定的业务需求或增强系统的安全性。本文介绍了一个实用的工具类——ParameterRequestWrapper,通过该类,我们可以更方便地对请求参数进行定

在Spring Boot应用中,我们经常需要对HttpServletRequest中的参数进行处理,以满足特定的业务需求或增强系统的安全性。本文介绍了一个实用的工具类——ParameterRequestWrapper,通过该类,我们可以更方便地对请求参数进行定制化处理。xgc28资讯网——每日最新资讯28at.com

1. 背景

在实际项目中,我们经常会遇到对请求参数进行特殊处理的需求,例如去除空字符串参数、处理JSON格式的POST请求等。为了更灵活地处理这些情况,我们创建了ParameterRequestWrapper类,它继承自HttpServletRequestWrapper,并在构造方法中对请求参数进行了初始化和定制化处理。xgc28资讯网——每日最新资讯28at.com

2. 功能介绍

2.1 参数去空格处理

在处理页面提交的参数时,有时会出现空字符串参数,如果不进行处理,这些空字符串可能会对SQL查询等操作产生不良影响。为了解决这个问题,我们在modifyParameterValues方法中去除了页面提交的空字符串参数,确保参数的有效性。xgc28资讯网——每日最新资讯28at.com

public void modifyParameterValues() {    // 去除页面提交出现的空字符串参数,防止SQL查询默认带进去,当作参数,造成页面列表不展示    params.entrySet().removeIf(e -> "".equals(e.getValue()[0]));    Set<String> set = params.keySet();    for (String key : set) {        String[] values = params.get(key);        values[0] = values[0].trim();        params.put(key, values);    }}

2.2 JSON格式的POST请求处理

对于POST请求,特别是JSON格式的POST请求,我们通过重写getInputStream方法,将请求中的JSON参数进行处理,去除两端空格,并输出日志,方便调试。xgc28资讯网——每日最新资讯28at.com

@Overridepublic ServletInputStream getInputStream() throws IOException {    // 非json类型,直接返回    if (!super.getHeader(HttpHeaders.CONTENT_TYPE).equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)) {        return super.getInputStream();    }    // 为空,直接返回    String json = IOUtils.toString(super.getInputStream(), StandardCharsets.UTF_8);    if (StringUtils.isEmpty(json)) {        return super.getInputStream();    }    log.info("去除POST请求数据两端的空格前参数:" + json);    Map<String, Object> map = StringJsonUtils.jsonStringToMap(json);    log.info("去除POST请求数据两端的空格后参数:" + JSON.toJSONString(map));    ByteArrayInputStream bis = new ByteArrayInputStream(JSON.toJSONString(map).getBytes(StandardCharsets.UTF_8));    return new MyServletInputStream(bis);}

使用示例

要使用ParameterRequestWrapper,只需在Controller中将HttpServletRequest替换为该类的实例即可,如下所示:xgc28资讯网——每日最新资讯28at.com

@PostMapping("/examplepublic ResponseEntity<String> example(ParameterRequestWrapper request) {    // 处理定制化的HttpServletRequest,可以直接使用request.getParameter等方法    // ...    return ResponseEntity.ok("Success");}

通过这样的替换,我们就可以在请求到达Controller之前对参数进行定制化处理,更好地适应项目的需求。xgc28资讯网——每日最新资讯28at.com

4. 总结

ParameterRequestWrapper是一个简单而实用的工具类,通过对HttpServletRequest的定制化处理,能够满足一些特殊场景下的需求。在实际项目中,根据具体情况,我们可以进一步扩展该类,以满足更复杂的参数处理需求。希望这个工具类能够帮助到开发者更方便地处理请求参数,提升项目的可维护性和灵活性。xgc28资讯网——每日最新资讯28at.com

xgc28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35331-0.html优化Spring Boot中HttpServletRequest参数处理的实用工具类

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 国民级应用滴滴11.27故障12小时全称回顾,看完,你想到些什么?

下一篇: 阿里云史诗级故障赔偿拿到了!但是业务也是影响的一片狼藉

标签:
  • 热门焦点
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • .NET 程序的 GDI 句柄泄露的再反思

    .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 自律,给不了Keep自由!

    自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 年轻人的“职场羞耻感”,无处不在

    年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元&ldquo;人在职场,应该选择什么样的着装?&rdquo;近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 携众多高端产品亮相ChinaJoy,小米带来一场科技与人文的视听盛宴

    携众多高端产品亮相ChinaJoy,小米带来一场科技与人文的视听盛宴

    7月28日,全球数字娱乐领域最具知名度与影响力的年度盛会中国国际数码互动娱乐展览会(简称ChinaJoy)在上海新国际博览中心盛大开幕。作为全球领先的科
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
Top