Это очень серьезная проблема. Вы не должны излишне выделять память. Displaytag, к сожалению, не поддерживает разбиение на страницы на уровне базы данных. Сначала все должно быть загружено в память Java. Очевидно, что наиболее эффективным способом использования памяти является сохранение только данных в памяти, которые конечный пользователь увидит, и отправка нового HTTP-запроса на сервер для получения именно этих новых строк из БД при каждом нажатии кнопки.
Никаких других тегов нумерации страниц на основе JSP, которые приходят на ум. Если бы вы использовали JSF, я бы порекомендовал PrimeFaces '<p:dataTable dynamic="true">
для этого. Вам все еще нужно написать код, который извлекает именно те строки из БД. Но это не так сложно, когда вы используете Hibernate и / или JPA.
В "простой ванили" JSP / JSTL вам нужно проделать немного больше работы. По сути, вам нужно предоставить несколько кнопок, которые будут изменять значение firstrow
и вызывать действие для соответствующего извлечения данных из БД. Ранее я подробно на это отвечал в этой теме: ResultSet to Pagination .