欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js提交java后台,双引号转义为&;quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决

程序员文章站 2022-04-17 14:38:11
...

一、 问题现象:
1.1. 前台数据
ryTask.serchData('000000INC20200830000001','2020-10-01','2020-10-21','Project','LSubmitInfo','INC')
1.2.后台数据
ryTask.serchData('000000INC20200830000001','2020-10-01','2020-10-21','Project','LSubmitInfo','INC')

前台json放入form表单文本框提交,
怎么到后台我的双引号"就变了,"
左括号变成了(
右括号变成了)
单引号变成了'

二、 解决方案:
2.1. maven依赖
  <!--解决前台传递参数转译问题-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.9</version>
        </dependency>

但是,commons-lang3中的StringEscapeUtils过期了,用下面的依赖代替即可

   <!--解决前台传递到后台参数特殊字符转译工具-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
            <version>1.1</version>
        </dependency>

2.2. 关键代码
//将接收到的jsonStr处理一次,就OK了
String newJson = StringEscapeUtils.unescapeHtml4(jsonStr);
2.3. 去空格处理

前台传递过来的数据居然每个参数之间多了空格

 public static void main(String[] args) {
        String str = "ryTask.serchData& #40;& #39;000000INC20200830000001& #39;,& #39; 2020-10-01& #39;,& #39; 2020-10-21& #39;,& #39;Project& #39;,& #39;LSubmitInfo& #39;,& #39;INC& #39;& #41;";
        String replace = str.replace(" ", "");
        System.out.println(replace);
        System.out.println(StringEscapeUtils.unescapeHtml4(replace));
        // System.out.println(StringEscapeUtils.unescapeHtml4("&#40;&#41;"));
    }

最后利用java的StringEscapeUtils.unescapeHtml4,成功解决问题