http://www.mydomain.com:8080/?mylink=http://www.myweb.com/#12345
この URL の形式は無効です。あなたの間違いは、HTTP 仕様に反して、のクエリ文字列パラメータ値をURL エンコードしなかったことです。mylink
このように、この部分は上のメイン URL のURL フラグメント識別子#
として誤って解釈されます。http://www.mydomain.com:8080
この URL は有効な形式です:
http://www.mydomain.com:8080/?mylink=http%3A%2F%2Fwww.myweb.com%2F%2312345
Java では、次のような URL を作成できます。
String url = "http://www.mydomain.com:8080/?mylink=" + URLEncoder.encode("http://www.myweb.com/#12345", "UTF-8");
または、JSP では次のようにします。
<c:url var="url" value="http://www.mydomain.com:8080/">
<c:param name="mylink" value="http://www.myweb.com/#12345" />
</c:url>
<a href="${url}">link</a>
どちらの場合でも、リクエスト パラメータはサーブレット コンテナによって適切にデコードされます。
String mylink = request.getParameter("mylink");
デコード手順は完全に透過的に行われることに注意してください。使用する必要はありませんURLDecoder
。toString()
また、その後の呼び出しはまったく意味がないため、削除されることに注意してください。すでに返されており、 null チェックなしString
で呼び出すと、パラメーターがまったく指定されていない場合にのみ終了します。toString()
NullPointerException