Displaying Database Data over Multiple Pages
When you display a database query result based on user-provided search criteria, such as the Employee Search form in Example 12-3, you run the risk of ending up with more rows than you like to show on one page. If the amount of data is large, you may even want to set an upper limit for how many rows can ever be returned by a query. The JSTL actions let you control these things with a few attributes and a configuration setting I haven’t described yet.
Setting an upper limit for the result size
To guard
against run-away queries, you can set a context
parameter in the deployment descriptor to limit the number of rows
returned by any JSTL <sql:query> action in
an application:
<web-app>
...
<context-param>
<param-name>
javax.servlet.jsp.jstl.sql.maxRows
</param-name>
<param-value>
100
</param-value>
</context-param>
...
</web-app>The javax.servlet.jsp.jstl.sql.maxRows parameter
value sets the maximum number of rows any
<sql:query> action in the application ever
adds to the result. You can override this value for an individual
action with the maxRows attribute. If you want the
action to return all matching rows, set it to -1.
There’s also a Result bean
property you can use to inform the user that the query returned more
rows than permitted by maxRows, named
limitedByMaxRows:
<sql:query var="result" maxRows="500"" sql="SELECT * FROM Employee" /> <c:if test="${result.limitedByMaxRows}"> Sorry, but we cannot show you all matches. Only the first 500 ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access