我在网址下方。

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.


[编辑]

..或仅将其视为String。很简单,不是吗?

// 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]);
  }
}

09-25 22:06