【发布时间】:2013-04-02 03:07:04
【问题描述】:
我想为我的网站创建一个编码的URL。例如,对于这个 URL:“http://google.com/index.html”
我想通过 URL 编码将此 URL 提供给客户端。
【问题讨论】:
-
为什么要在 JSP 上执行此操作?你不能只在 servlet 上使用UrlEncoder.encode() 并将数据传递给 JSP 吗?
我想为我的网站创建一个编码的URL。例如,对于这个 URL:“http://google.com/index.html”
我想通过 URL 编码将此 URL 提供给客户端。
【问题讨论】:
由于您使用的是 JSP,我会坚持使用 JSTL 和 not use scriptlets。你可以使用 JSTL 标签<c:url /> in combination with <c:param />:
<c:url value="/yourClient" var="url">
<c:param name="yourParamName" value="http://google.com/index.html" />
</c:url>
<a href="${url}">Link to your client</a>
这将导致:
<a href="/yourClient?yourParamName=http%3a%2f%2fgoogle.com%2findex.html">Link to your client</a>
【讨论】:
<c:param name="DocType" value=""/>,但结果是DocType%3d=。我只需要DocType=。
使用 UrlEncoder.encode() 就是答案。但关键是这种方法不进行百分比编码。使用:
java.net.UrlEncoder.encode(stringOfURL,"UTF-8").replace("+","%20")
【讨论】:
接受的答案缺少一些有效的 JSP 代码,应该是:
<c:url value="/yourClient" var="url">
<c:param name="yourParamName" value="http://google.com/index.html" />
</c:url>
<a href="<c:out value='${url}'/>">Link to your client</a>
正如评论指出的那样,另一种选择是使用 JavaScripts encodeURIComponent 方法。
【讨论】:
试试你的 JSP 代码:
Base64.encodeBase64( "http://google.com/index.html")
【讨论】: