Filter to block duplicate POST submission on server side
Just some suggestions:

1.Change you UI concept. 


Hide Submit button until the server responds.
Show Please Wait notification / dialog


2.Use JavaScript to send request and prevent multiple submits:

if(ignoreSubmitEvent){
    return;
}

hideSubmitButton();
ignoreSubmitEvent = true;

var jqxhr = $.post( "/url...", { submittoken: "unique-one-time-token", name: "dit" });

jqxhr.done(function( data ) {
     [...] // your code 
});

jqxhr.fail(function() {
     [...] // your code 
});

// DO IT ALLWAYS
jqxhr.always(function() {
    showSubmitButton();
    ignoreSubmitEvent = false;
});


3.It could be a good idea to use HandlerInterceptor instead of Filter

public class OneTimeTokenPostInterceptor extends HandlerInterceptorAdapter {

    private static final String UNIQUE_ONE_TIME_TOKEN = "unique-one-time-token";
    private static final Logger logger                = LoggerFactory.getLogger(OneTimeTokenPostInterceptor.class);

    private Set&lt;String&gt;         tokens                = Collections.synchronizedSet(new HashSet&lt;String&gt;());

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String token = request.getParameter(UNIQUE_ONE_TIME_TOKEN);

        logger.debug("preHandle: token = {}", token);

        if (token == null || tokens.contains(token)) {
            logger.error("token {} is null or allready used", token);
            response.sendError(202); // ignore request
            return false;
        }
        tokens.add(token);
        return true;
    }

    //
    // GET CALLED AFTER CONTROLLER DID HIS JOB
    //

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        String token = request.getParameter(UNIQUE_ONE_TIME_TOKEN);

        logger.debug("postHandle: token = {}", token);

        if (token != null) {
            tokens.remove(token);
        }
    }
}