Your browser windows are sharing the same session. There are a couple of ways I can think of to handle this problem and I have used them both in my Struts applications before.
One is to keep the query
string as a hidden field in your form and keep the results in the request scope (using request.setAttribute). That is, you don't keep the resultset as a property of your form. The client refreshes or page through the results, he'll send the query string again, accompanied by any additional parameters needed to handle paging logic, etc.
Or if you want to keep resultsets in the session to avoid requerying the database a lot, you'd have to put different resultsets into a session-scoped collection (on the form will work since forms are session scoped) and send back the key into the collection to the client. As each client submits a query request, he will receive back the query key or id along with the results. When he has to page or refresh, he'll submit the key/id along with the request and the server can retrieve the correct resultset from the collection.
If your resultsets are not that large, the requery every time approach will be simpler. If performance is a concern, the second approach may help but be sure to use a profiler so that you can objectively compare the two methods.