Servlets request.getParameter和request.getQueryString是否产生不兼容的结果?
在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”)的结果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
为什么后者会丢失“+”字符?当您调用
request.getQueryString()
时,您会得到url栏中的查询字符串。当您调用request.getParameter(“fname”)
时,您将获得该参数的值,并解码任何编码符号+
?如果创建了链接,则在构建链接时应在参数上使用urlencode函数。(它将用%2B
替换+
,后者将被请求.getParameter(“fname”)翻译回文本+
)
更改请求不是我的第一选择。我还需要注意哪些其他字符?我确实找到了HttpServlet文档,其中没有提到这两种方法之间的不同行为。我的问题的答案在这里,我希望有一天会对其他人有所帮助。我进行了搜索,但没有找到合适的答案.你有我想要的答案吗?谢谢。