Java 如何从HttpServletRequest getParameter记录CharConversionException
在HttpServletRequest上调用getParameter时,有时会出现以下错误:Java 如何从HttpServletRequest getParameter记录CharConversionException,java,servlets,encoding,Java,Servlets,Encoding,在HttpServletRequest上调用getParameter时,有时会出现以下错误: INFO: Character decoding failed. Parameter [SomeParameter] with value [SomeValue] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level l
INFO: Character decoding failed. Parameter [SomeParameter] with value [SomeValue] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
java.io.CharConversionException: isHexDigit
...
为了找到这个错误的来源,我想记录完整的请求url,但问题是您无法“识别”何时抛出错误,因为它是在getParameter方法中捕获的。
在getParameter方法之外,不会抛出错误,您可以捕获并记录错误
那么有没有办法让我自己发现这个编码错误呢
注意:我知道是什么导致了错误,参数中的%编码错误。我只是不知道它来自哪里,因为它是源代码中非常重要的位置。这是一条Tomcat错误消息 如果Tomcat无法解析参数,它会将一个特殊的请求属性设置为
Boolean.TRUE
,您可以使用它来检测错误的参数:
boolean paramParseFailed =
request.getAttribute("org.apache.catalina.parameter_parse_failed") != null;
请注意,这仅在读取参数后设置,因为Tomcat会惰性地填充参数。非常感谢!这正是我想要的。