java servlet:请求参数包含加号

时间:2013-10-10 17:29:08

标签: java servlets

请求参数类似于decrypt?param=5FHjiSJ6NOTmi7/+2tnnkQ==

在servlet中,当我尝试按String param = request.getParameter("param");打印参数时,我得到5FHjiSJ6NOTmi7/ 2tnnkQ==。它将角色+变为空格。如何保留原始参数或如何正确处理角色+

此外,我应该处理哪些角色?

4 个答案:

答案 0 :(得分:6)

您有两个选择

URL对参数

进行编码

如果您可以控制URL的生成,则应choose this。如果不是......

手动检索参数

如果您无法更改URL的生成方式(上图),则可以手动检索原始URL。 Certain methods decode parameters对你而言。 getParameter就是其中之一。另一方面,getQueryString不解码字符串。如果您只有几个参数,那么parse the value yourself就不难了。

request.getQueryString();
//?param=5FHjiSJ6NOTmi7/+2tnnkQ==

答案 1 :(得分:2)

如果您想使用' +'生成时需要对其进行编码的URL中的字符。对于' +'正确的编码是%2b

答案 2 :(得分:0)

使用URLEncoder,URLDecoder的静态方法来编码和解码URL。

例如: - 使用

对URL参数进行编码
    URLEncoder.encode(url,"UTF-8") 

返回服务器端,使用

解码此参数
    URLDecoder.decode(url,"UTF-8") 

decode方法返回已解码URL的String类型。

答案 3 :(得分:0)

虽然这个问题已有几年了,但我想写下我如何解决问题:在GWT页面中创建文件的下载链接

com.google.gwt.http.client.URL.encode(finalurl)

用于对URL进行编码。 问题是我们的客户在文件名中的“+”符号未编码/转义。所以我不得不删除URL.encode(finalurl)并使用

对url中的每个参数进行编码
URL.encodePathSegment(fileName)

我知道我的问题与GWT绑定但看起来,URLEncoder.encode(字符串,编码)应仅应用于参数。