tomcat启动,查询字符串存在中括号问题,不需要转码

3 篇文章 0 订阅
3 篇文章 0 订阅

经常遇到前台使用get方式查询,传递复杂对象到后台的情况,需要使用到中括号,如果直接使用中括号,后台tomcat服务器不识别,需要前台进行转码 为 %5B %5D,如果使用浏览器请求,会导致浏览器再次将%转码,为了解决该问题,可以配置tomcat识别不转码的中括号,配置如下

1. 如果是使用springboot方式启动,可以在application.yml增加配置

server.tomcat.relaxed-query-chars: [,]

2. 有的版本使用1不生效,可以增加配置类

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

@Component
public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers(connector -> connector.setAttribute("relaxedQueryChars", "[]"));
    }
}

3. 外部tomcat启动,修改server.xml文件,connector增加对应的属性 relaxedQueryChars="[]"

    <Connector connectionTimeout="20000" port="8080" relaxedQueryChars="[]" protocol="HTTP/1.1" redirectPort="8443"/>

4.前台使用get传递复杂对象到后台

如果是数组中包含简单类型,例如 字段fieldA,可以使用多个字段传值,如果是对象中的属性,可以使用[],如果是数组中的对象,可以使用 对象[index].field,具体如下图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值