Как примерно так: -
boolean hasTrailingQuestionMark = "GET".equals(request.getMethod()) && request.getParameterNames().hasMoreElements();
Я могу ошибаться, но если запрос GET и у него есть параметры, то я думаю, что мы можем с уверенностью предположить, что после URI есть завершающий вопросительный знак.
UPDATE
Я только что протестировал код, этот подход работает, только если у вас есть параметры: http://server/bla?param=1
. Однако, если у вас есть только http://server/bla?
, это условие не будет выполнено. Я не знаю, пытаетесь ли вы перехватить последнюю подпись URL.