...and the answer you'll find is the answer you've already come up with.
No, there isn't a stable and reliable mechanism for handling the 'Back' button.
The best I've seen is to use the MVC architecture with a 'Front Controller'. In this you have a single
Servlet that receives all requests and decides what to return to the client. If you get your cache control sorted out, even if the client hits the back button, a new request will go though and they will get the next page instead...