Servlets request.getParameter和request.getQueryString是否产生不兼容的结果?

Servlets request.getParameter和request.getQueryString是否产生不兼容的结果?,servlets,jetty,Servlets,Jetty,在jetty服务器日志中,我观察到以下情况: 2016年1月7日10:03:52605调试WS.DuccHandlerProxy-无句柄(GET/ducc servlet/file contents?fname=/home/degenaro/ducc/logs/1/x+y+z.log&page=1) 2016年1月7日10:03:52605调试WS.DuccHandler-N/A handleDuccServletFileContents qs:fname=/home/degenaro/ducc

在jetty服务器日志中,我观察到以下情况:

2016年1月7日10:03:52605调试WS.DuccHandlerProxy-无句柄(GET/ducc servlet/file contents?fname=/home/degenaro/ducc/logs/1/x+y+z.log&page=1)

2016年1月7日10:03:52605调试WS.DuccHandler-N/A handleDuccServletFileContents qs:fname=/home/degenaro/ducc/logs/1/x+y+z.log&page=1

2016年1月7日10:03:52605调试WS.DuccHandler-不适用handleDuccServletFileContents fn:/home/degenaro/ducc/logs/1/x y z.log

与最后两个条目对应的代码分别包含request.getQueryString()和request.getParameter(“fname”)的结果


为什么后者会丢失“+”字符?

当您调用
request.getQueryString()
时,您会得到url栏中的查询字符串。当您调用
request.getParameter(“fname”)
时,您将获得该参数的值,并解码任何编码符号+表示一个空格,因此它被解码为空格

谢谢!因此,如果输入是不可变的,那么我想我必须自己解析查询字符串并放弃使用request.getParameter()?@user2133121是否需要文本
+
?如果创建了链接,则在构建链接时应在参数上使用urlencode函数。(它将用
%2B
替换
+
,后者将被
请求.getParameter(“fname”)翻译回文本
+
更改请求不是我的第一选择。我还需要注意哪些其他字符?我确实找到了HttpServlet文档,其中没有提到这两种方法之间的不同行为。我的问题的答案在这里,我希望有一天会对其他人有所帮助。我进行了搜索,但没有找到合适的答案.你有我想要的答案吗?谢谢。