Похоже, что '#' должно быть '?'.
В обычном URL параметры передаются в виде пар «ключ-значение» после «?» и несколько параметров, соединенных вместе, используя '&'. URL может выглядеть следующим образом:
http: //someserver.com/somedir/somepage.html?param1=value1¶m2=value2¶m3=value3.
Обычно контейнер сервлетов Java возвращает все после '?' при вызове getQueryString (), но из-за отсутствия символа «?» возвращает ноль.
Как @Sandeep Nair предложил, getRequestURL () должен вернуть вам полный URL-адрес, и вы можете проанализировать его с помощью регулярных выражений, чтобы получить необходимую информацию. Возможное регулярное выражение для использования будет выглядеть следующим образом:
(?<=access_token=)[a-zA-Z0-9.-]*
Однако getRequestURL () обычно НЕ возвращает строку запроса, поэтому использование этого метода основывается на том факте, что вместо '#' и '?' и поэтому, вероятно, не очень хорошее решение. Смотри здесь .
Я бы посоветовал вам выяснить, почему вы получаете «#» вместо «?» и попытайтесь изменить это, если вы можете сделать это, тогда контейнер сервлета должен управлять параметрами URL для вас и вызвать request.getAttribute ("access_token") и request.getAttribute ("token_type") (см. здесь ) вернет оба значения в виде строк.