首页 > 其他分享 >关于修改前端请求原生request加锁问题

关于修改前端请求原生request加锁问题

时间:2023-04-06 15:36:02浏览次数:48  
标签:原生 加锁 String contains request replace superQueryArr parameterMap

1

正常情况后端获取前端的request请求:(原生已加锁,修改失效 校验)

Map<String, String[]> parameterMap = req.getParameterMap();

......

报错:错误:java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap
at org.apache.catalina.util.ParameterMap.remove(ParameterMap.java)

       
解决办法:重新在堆里创建新的对象
 Map<String,String[]> parameterMap = new HashMap<>(req.getParameterMap());

        String[] superQueryArr = parameterMap.get("superQueryParams");

        String[] newSuperQueryArr = new String[superQueryArr.length];

        int arrSize = superQueryArr.length;

        if(arrSize>0) {

            int index = 0;

            for (String s : superQueryArr) {
                //专门对日期类型高级查询比较进行设置(eg:审核日期大于查询日期,实际获取的应该是查询日期之前的数据)
                if ((s.contains("date") || s.contains("datetime"))) {
                    if (s.contains("gt")) {
                        s.replace("gt", "lt");
                    } else if (s.contains("lt")) {
                        s.replace("lt", "gt");
                    } else if (s.contains("ge")) {
                        s.replace("ge", "le");
                    } else if (s.contains("le")) {
                        s.replace("le", "ge");
                    }
                }
                newSuperQueryArr[index++] = s;
            }
        }
            parameterMap.put("superQueryParams",newSuperQueryArr);

  

标签:原生,加锁,String,contains,request,replace,superQueryArr,parameterMap
From: https://www.cnblogs.com/pureray-hui/p/16591061.html

相关文章

  • java后端接收Request请求参数方式
    1.直接在Controller方法参数上配置参数名@RequestMapping("/method01")publicStringmethod01(Stringname,Integerage,Doublemon){Useruser=newUser();user.setName(name);user.setAge(age);user.setMoney(mon);......
  • 成功解决requests 报错raise SSLError(e, request=request)_requests.exceptions.SSL
    问题描述在使用requests调用https接口时,会遇到ssl证书报错raiseSSLError(e,request=request)requests.exceptions.SSLError:HTTPSConnectionPool(host='v4.ketangpai.com',port=443):Maxretriesexceededwithurl:/UserApi/login(CausedbySSLError(SSLCertVerificat......
  • 云原生中如何构建链路追踪
    追踪面向的是请求,可以通过获取请求执行的相关数据,轻松分析出请求中的异常点,针对云原生架构下的追踪,大体可以分为针对主机的动态追踪(DynamicTracing),以及针对微服务的应用行为追踪。动态追踪是一种高级的内核调试技术,通过探针机制,采集内核态或者用户态程序的运行信息,而不需要修改内核......
  • 浅谈云原生可观测性
    随着云原生、微服务等新架构、新生态的引入和发展,可观测性(Observability)越来越多地被提及和重视。1.为什么云原生一定需要可观测性架构复杂在云原生时代,容器化的基础设施使应用自身变得更快、更轻,一台主机上可以快速部署和运行几十个甚至上百个容器[1],而Kubernetes等容器编排平台......
  • Android 原生 SQLite 数据库的一次封装实践
    作者:LiBingyan本文主要讲述原生SQLite数据库的一次ORM封装实践,给使用原生数据库操作的业务场景(如:本身是一个SDK)带来一些启示和参考意义,以及跟随框架的实现思路对数据库操作、APT、泛型等概念更深一层的理解。实现思路:通过动态代理获取请求接口参数进行SQL拼凑,并以接口返回值(泛型)......
  • InnoDB 事务加锁分析
    vivo互联网技术微信公众号 作者:何志创一般大家对数据库事务的了解可能停留在事务的ACID特性以及事务4种不同的隔离级别层面上,而对于事务4种不同隔离级别如何实现了解相对较少。本文以MySQL数据库 InnoDB 引擎为例,为大家分析 InnoDB数据库引擎对默认的隔离级别可重复读(RR......
  • 解决Mixed Content: The page at https://* was loaded over HTTPS, but requested an
    问题:前端页面调用后端接口加载不出来 原因分析:通过查看浏览器调试console日志,得到报错如下 原文:MixedContent:Thepageathttps://*wasloadedoverHTTPS,butrequestedaninsecureXMLHttpRequestendpointhttp://*.Thisrequesthasbeenblocked;thecont......
  • Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析
    Sevlet规范:HttpServlet类和HttpServletRequest接口源码解析每博一文案命运总是不如人愿,但往往是在无数的痛苦总,在重重的矛盾和艰辛中,才是人成熟起来。你,为这瞬间的辉煌,忍耐了多少暗淡无光的日月,你会死亡,但你也会证明生命有多强大。一次邂逅,一次目光的交融,就是永远的合二为......
  • 云原生的崛起
    2013年春,Docker技术开源宣告了云原生计算的序幕。Docker公司创新地提出了应用打包规范Docker镜像,它将应用及其所有依赖项打包,从而使应用可以在不同的计算环境之间快速、可靠地运行。容器技术提供了一个优雅的抽象,让开发所需要的灵活性、开放性和运维所关注的标准化、自动化达......
  • Postman文件上传报错:The current request is not a multipart request解决方法
    主要报错语句为: Thecurrentrequestisnotamultipartrequest就是说当前这个请求不是一个multipartrequest,也就是说不是上传文件的请求。那怎么办呢?这里我们需要知道一点,spring在处理入参的时候,遇到MultipartFile相关就会先去校验。(在controller中会用MultipartFile......