Sometimes there is a need to represent to a user some big amount ot data. In such cases, usually, those data is divided into several ranges.

Here is a sample page that allows the user to scroll, or page, through information. The page's output prints ranges of data the user can click on the top, and the bottom prints the data. To produce these range links, we loop over our data from the first item to the last one. We set the step attribute to perPage so that we loop only once for each range we want to print:

<%@ taglib prefix="c" uri="" %>

////////////// first configure scroller:

<c:set var="totalCount" scope="session" value="100"/>
<c:set var="perPage" scope="session" value="20"/>

  end="${totalCount - 1}"

////////////// printing ranges:

  <a href="?start=<c:out value="${boundaryStart}"/>">
  <c:out value="${boundaryStart}"/>
  <c:out value="${boundaryStart + perPage - 1}"/>

////////////// printing data items:

  end="${param.start + perPage - 1}">
  <c:if test="${status.first}">
    <li><c:out value="${current}"/></li>
    <c:if test="${status.last}">