java - servlet 请求参数值包含& 符号?

标签 java url urlencode url-parameters

我的网址如下。

http://localhost:8080/servlet?user=John&message=hai&hello&recipient=scott

在上面的网址中,我有 3 个请求参数,如下所示。

user=John
message=hai&hello
recipient=scott

这里的问题是 message 请求参数的值。因为这里它的值包含与号 (&)。当我尝试 request.getParameter("message") 时,我只得到 hai 而不是 hai&hello 。我该如何解决这个问题?

谢谢!

最佳答案

试试这个,而不是....&message=hi%26hello....。我的意思是,对其进行编码。

[已编辑]

正如您所说,您无法控制它,它是遗留应用程序,他们无法修复它;那么我想您仍然可以使用 URLEncoder 对 URL 进行编码。

String encodedUrl = URLEncoder.encode(url, "UTF-8");
// Then use encodedUrl as you were using url.

[已编辑]

..或者只是将其视为字符串。很简单,不是吗?

// Please refactor.
String[] paramPart = url.split("?");
String[] params = paramPart[1].split("&");
Map<String, String> paraMap = new HashMap<>();
for(int i=0; i<params.length; i++) {
  String[] keyValue;
  if(params[i].contains("=")) {
    keyValue = params[i].split("=");
    paraMap.put(keyValue[0], keyValue[1]);
  } else {
    params[i-1] = params[i-1] + "&" + params[i];
    keyValue = params[i-1].split("=");
    paraMap.put(keyValue[0], keyValue[1]);
  }
}

关于java - servlet 请求参数值包含& 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779631/

相关文章:

.htaccess 在 URL 中带有 `#`

java - RCP 3.x 可编辑 PropertySheet View

java - Hibernate 时间标准 > 0

java - Hibernate 3.x 与 Log4j2 兼容吗?

java - 如何确定 url http ://www. test.com/abc.pdf 是文件还是目录?

javascript - 根据谷歌表格中的 URL 查找并选择一个单元格

c# - 如何在 C# 中用 %20 替换所有空格?

java - 为什么我的代码给出 IOException(系统找不到指定的文件)?

url - jQuery $.post - 我必须对 URL 参数进行编码吗?

java - 在服务器端,编码/解码后的 URL 参数值看起来为 'strange' 。为什么?