There are a number of solutions and most have been covered in this forum, as weel as the
Servlets and JDBC forums. I recommend searching these forums for "ResultSet paging" first.
The solution you choose will depend on the frequency of searches, the expected number of results, the size of each item, whether the query is cached or needs to be constantly updated from the DB, what load you are allowed to put on the database, how much network traffic you expect and other issues.
There is no single solution, it depends on how the factors above relate to your particular situation.
You could cache the results on the session, you could cache the results on the application if you expected others to execute the same query, you could store just the IDs on the session and load the data as required, you could execute the entire query every time and pull off the entries you wanted, you could use a disconnected ResultSet, you could use a paged ResultSet (ie only return results 101 to 200) or one of many other solutions.
Have a look at previous discussions we've had.
Dave