Java 如何在JSP/JSTL中对URL进行URL编码?

Java 如何在JSP/JSTL中对URL进行URL编码?,java,html,jsp,Java,Html,Jsp,我想为我的站点创建一个编码的。例如,对于此URL: 我想通过URL编码将此URL提供给客户端 尝试您的JSP代码: Base64.encodeBase64( "http://google.com/index.html") 因为您使用的是JSP,所以我坚持使用和。您可以使用JSTL标记: 这将导致: <a href="/yourClient?yourParamName=http%3a%2f%2fgoogle.com%2findex.html">Link to your clien

我想为我的站点创建一个编码的。例如,对于此URL:

我想通过URL编码将此URL提供给客户端

尝试您的JSP代码:

Base64.encodeBase64( "http://google.com/index.html")

因为您使用的是JSP,所以我坚持使用和。您可以使用JSTL标记:


这将导致:

<a href="/yourClient?yourParamName=http%3a%2f%2fgoogle.com%2findex.html">Link to your client</a>

使用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方法。

为什么要在JSP上这样做?您不能在servlet上使用并将数据传递给JSP吗?Base64编码!=URL编码如何传递空参数值?我尝试了
,但结果是
DocType%3d=
。我只需要
DocType=
。我的表达式失败,因为它包含一个引号。(波波塔克利亚前哨)。如何通过转义而不是替换来解决问题?单引号不需要URL编码。应该是java.net.urlcoder而不是java.net.urlcoder
<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>