使用get方法传参报400状态码解决办法

前言:网上查了很多方法,比如给server.xml文件添加属性代码,还有给catalina.properties文件末尾添加代码,测试之后还是没用(泪奔~~~),好了,下面我们直奔主题。

报错原因

 当我们跳转网页的时候,浏览器报400,一般是因为前端传的参数类型或名称与后台接收的参数

的实体类的属性类型或名称不匹配,也就是前后台匹配错误

测试过程

 

这里我们在servlet01文件中将要传递的参数CLASS中包含中文字符

 在servlet02文件中正常接收

发现在浏览器运行点击超链接,报错

 修改servlet01中CLASS的值为3212

 跳转成功!

测试总结:我们发现不同的参数在传递时会产生不同的访问结果。

查询资料后发现,Tomcat7以上版本,严格按照RFC 3986规范进行访问解析,RFC 3986规范定义了URL中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4种特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]),而我的web服务器(tomcat)是9.0的版本所以在传递中文字符时报错了。

解决办法


1、更换低版本Tomcat规避此问题(不建议)

2、去除URL中的特殊字符 (也不建议)

3、我们给URL上的特殊字符定义编码 如图:

 

成功解决! 

--------------------------------------------------------------------------------------------------------------------------------

2022_10_31_补充

解决办法

4、在服务器的server.xml的Connector节点下添加useBodyEncodingForURI="true"属性(就会将当前上传页面的编码作为URL编码,注意:在取出URL中的参数的页面要设置     request.setCharacterEncoding("...");也就是URL参数的解码方式,解码方式要和页面设置的编码方式格式一致,否则会乱码)

---------------------------------------------------------------------------------------------------------------------------------

注:文章为作者笔记,有问题欢迎评论留言!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值