1

URLの下にあります。

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

上記の URL には、以下の 3 つのリクエスト パラメータがあります。

user=John
message=hai&hello
recipient=scott

ここで、問題はmessageリクエスト パラメータの値にあります。ここでは、その値にアンパセンド (&) が含まれているためです。私が試してみるとrequest.getParameter("message")、私は得るだけですhaiが、そうではありませんhai&hello。この問題を解決するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

4

代わりにこれを試してください....&message=hi%26hello....。つまり、エンコードします。

【編集済】

あなたが言ったように、あなたはそれを制御できず、それはレガシーアプリケーションであり、修正できません。それでも、URLEncoderURLをエンコードするために使用できると思います。

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]);
  }
}
于 2013-09-13T06:33:00.367 に答える