Use AJAX to load the pages instead of doing a hard refresh. With that approach, every checkbox click can be recorded and stored in an Array which will persist because the page is not being refreshed.
To do this in jQuery, use something like:
$("#tableContainer").load("/data/page/2");
That would load the contents from the url, and inject it into an element with id "tableContainer".
Live events in jQuery will allow binding to all checkboxes (current and future):
$("#tableContainer input[type='checkbox']").live("click", function() {
if($(this).is(':checked')) {
checkedItems.add($(this).val());
}
}
It's not complete as you'd have to remove an item from the Array if it was unchecked, and modify your servlet to send only part of the page that changes. But hope you got the idea.
jQuery has good documentation on ajax and live events.