How to URL encode a URL in JSP / JSTL?

I want to create an encoded URL for my site. Say for example, for this URL: "http://google.com/index.html"

I want to give this URL to the client by URL encoding it.

Answers


Since you are using JSP, I would stick to JSTL and not use scriptlets. You could use the JSTL tag <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>

This will result in:

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

Using UrlEncoder.encode() is the answer. But the point is that this method doesn't percentage encode. Use:

java.net.UrlEncoder.encode(stringOfURL,"UTF-8").replace("+","%20")

The accepted answer is missing some JSP code to be valid, it should be:

<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>

As a comment pointed out, another option is to use JavaScripts encodeURIComponent method.


Try in your JSP code:

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

Need Your Help

Why does this memory address %fs:0x28 ( fs[0x28] ) have a random value?

c gcc x86-64 buffer-overflow disassembly

I've written a piece of C code and I've disassembled it as well as read the registers to understand how the program works in assembly.

Setting PATH environment variable in OSX permanently

macos bash unix path environment-variables

I have read several answers on how to set environmental variables on OSX as permanently.