Working with URL-Related Actions

In web application development, you often have to manipulate URL such as:

  • Get the content of a web page for display.
  • Redirect users to another URL.

To make it easier for you, JSTL provides several useful URL-related actions to simplify URL manipulation.

The <c:param> Action

The <c:param> action is used to define a parameter. The <c:param> is often used inside another action such as <c:import>. <c:url> or <c:redirect> actions. To use the <c:param> action, you use the following syntax:

<c:param name="paramName" value="value" />
Code language: HTML, XML (xml)

There are two attributes:

  • Name: is where you put the parameter’s name.
  • Value: is where you specify the parameter’s value.

The <c:import> Action

The <c:import> action allows you to retrieve the content of another URL to process it within the JSP page. The syntax of the <c:import> action is as follows:

<c:import url = "url" [context = "context "] [var = "varName" [scope="{page|request|session|application}"] [charEncoding="charEncoding"]> <%-- optional body content for <c:param> subtags --%> </c:import>
Code language: JavaScript (javascript)

There are several attributes of the import action however only URL attribute is mandatory. The URL could be absolute or relative. If it is a relative URL, the resource that you refer must be inside the web application.

Inside the body of the <c:import> action, you can also have parameters using the <c:param> action.

Let’s take a look at an example of using the <c:import> action:

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>The c:import Action</title> </head> <body> <c:import url="person.xml" var="person"> </c:import> <textarea cols="40" rows="15"> <c:out value="${person}" /> </textarea> </body> </html>
Code language: HTML, XML (xml)

In the example, first we used the <c:import> action to retrieve the content of an XML file located inside the web application. Then we placed the content of the XML file into a text area for demonstration purpose.

The <c:redirect> Action

The <c:redirect> simply redirects users from the current URL to another URL.

The syntax of the <c:redirect> is as follows:

<c:redirect url="newurlhere" />
Code language: HTML, XML (xml)

In the url attribute’s value, you specify the new URL or page that you want to redirect to.

Let’s take a look at an example of using the <c:redirect> action:

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>The c:redirect Action</title> </head> <body> <c:if test="${param.postback == 1}"> <c:redirect url="${param.urls}" /> </c:if> <form action="urlredirection.jsp" method="post"> <label for="urls">Search Engine</label> <select name="urls"> <option value="http://google.com">Google</option> <option value="http://yahoo.com">Yahoo</option> <option value="http://bing.com">Microsoft</option> </select> <input type="hidden" name="postback" value="1" /> <input type ="submit" value="Go" /> </form> </body> </html>
Code language: HTML, XML (xml)

In the above example, you choose a search engine and click Go button, the page will redirect to the corresponding search engine’s URL.

The <c:url> Action

The <c:url> action enables you to format a URL correctly. Inside the <c:url> action, you can put multiple <c:param> to construct URL. Here is an example of using the <c:url> action:

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>The c:url Action</title> </head> <body> <a href="<c:url value="http://localhost/JSTLDemo/curl.jsp"> <c:param name="mode" value="demo" /> </c:url>">The c:url Action Demo</a> </body> </html>
Code language: HTML, XML (xml)

In the above example, we constructed a link: http://localhost/JSTLDemo/curl.jsp?mode=demo by using c:url action. We used the <c:param> to define the query string which is mode with the value demo.