Article:
  Handling Multiple Submits
Subject:   Another Way to Solve this problem is
Date:   2003-05-24 03:37:54
From:   vbjain72
if you don't want to deal with redirects/forwards, and you need to keep info from being resubmitted, then this works.
In the implicit request object, certain headers are sent during a refresh that aren't sent during a normal request. Or in the case of IE, the "Accept" header is different for refreshes than it is for normal requests.
So test for these headers.
IE: "accept" == "*/*"
Opera: the "cache-control" header exists
Netscape/Mozilla: the "pragma" header exists


The method for recovering the headers must be getHeader instead of get Parameter. So, your code will look like:
if ((!request.getHeader("accept").equals("*/*")) && // bypass I.E. reload
(request.getHeader("pragma") == null) && // bypass Netscape reload
(request.getHeader("cache-control") == null)) { // bypass Opera reload
add.data.to.db
}