HTTP状态500-内部服务器错误怎么解决

在运行时,他显示http500-内部服务器错误,在22行出现错误,我不知道是错在什么地方,我的代码是对的,但是我对语法不熟

img

img

第22行获取name的值为null,所以导致23行转编码的时候发生空指针异常。
还有你这个中文都乱码了,处理下。

img

这个没获取到值不就空指针了么

img

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/738146
  • 除此之外, 这篇博客: http请求中加号被替换为空格?源码背后的秘密中的 源码之下无秘密 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    本文分析的Tomcat源码版本为:9.0.29.
    在这里插入图片描述

    通过Debug可以找到两处关键的代码:

    第一处:
    org.apache.tomcat.util.http.Parameters#processParameters(byte[], int, int, java.nio.charset.Charset) 下图中的290行
    在这里插入图片描述
    在这个地方因为有’+’,所以把decodeValue参数设置为true,表示需要对请求中的value进行decode操作。

    decode的具体的源码位置如下,也就是第二处关键代码:
    org.apache.tomcat.util.buf.UDecoder#convert(org.apache.tomcat.util.buf.ByteChunk, boolean)
    在这里插入图片描述在这里插入图片描述

    可以看到,在源码里面有一段代码,是把’+'替换了为了空格,是特意做了这样的特殊处理。

    整个方法的解读如下:
    在这里插入图片描述

    所以我的入参是jay+love,但是后台接收到的是jay love,加号变空格了。为什么呢?

    原因很简单,在源码中有一段代码把’+'替换成了空格,刻意为之。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^