http://www.mydomain.com:8080/?mylink=http://www.myweb.com/#12345
此URL格式为invalid。您的错误在于,您没有对的query string参数值进行URL编码,这与HTTP规范相反。这样,#
部分被错误地解释为http://www.mydomain.com:8080
上的主要URL的URL fragment identifier。
该URL格式无效:
http://www.mydomain.com:8080/?mylink=http%3A%2F%2Fwww.myweb.com%2F%2312345
您可以创建这样一个URL中的Java如下:
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>
无论是方式,请求参数现在将被servlet容器正确解码:
String mylink = request.getParameter("mylink");
请注意,解码步骤完全透明,您不需要使用URLDecoder
左右。请注意,之后拨打toString()
将被删除,因为它没有任何意义。它已经返回String
,并且调用toString()
而没有空检查只会在NullPointerException
时完全没有指定参数。
你不需要toString()调用。 – EJP