request.getParameter仅返回第一个参数的值,并为jsp中的其他url参数返回null

时间:2017-06-13 07:55:43

标签: java jsp encoding urlencode

我的网址中有3个参数。我用它们编码了它们 http://localhost/myPage.jsp%3Fparam1%3Daction%26param2%3D3%26param3%3Dhi 带编码参数的我的网址如下所示

pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"

我在jsp页面中指定了request.setCharacterEncoding("UTF-8"),并在使用request.getParameter("param1")获取参数值之前设置了null

我仍然只得到第一个参数的价值,即param1。对于其他参数,我得到URLEncoder.encode(myEncodedUrl,"UTF-8")

但如果我进行双重编码(使用&),我可以得到所有三个参数的值。我想双重编码不是正确的方法。

如果我将%2526替换为%26而不是&(实际编码值为\w*[a-z]\w*(\.\w*[a-z]\w*)+ ),我将获得所有3个参数的值。我猜它也不正确。

请先让我知道我遗失的内容。

1 个答案:

答案 0 :(得分:1)

您的网址编码错误,您不应对整个网址进行编码:

?param1=action&param2=3&param3=hi

您应该只编码参数的值:'action','3'(如果它不是整数)和'hi'。

也许这个链接可以帮到你。  Java URL encoding of query string parameters