2010-06-02 4 views
2

У меня есть QueryString, что я перейти на метод сервлета doGet(), который выглядит следующим образом:символ #, кажется, вызывает проблемы с ПОЛУЧИТЬ запрос

кол = 9 & preId0 = -99 & objId0 = - 99 & preId1 = -99 & objId1 = -99 & preId2 = 69 & objId2 = 16 #! 78 & preId3 = -99 & objId3 = -99 & preId4 = -99 & objId4 = -99 & preId5 = -99 & objId5 = -99 & preId6 = -99 & objId6 = -99 & preId7 = -99 & objId7 = -99 & preId8 = -99 & objId8 = -99

После включительно # все равно нулю, поэтому я предполагаю, что в # имеет какой-то особый смысл , Это правда? и есть ли другие такие персонажи, которые это сделают?

ответ

4

Да, # указывает на хэш. Это используется, например, для перехода на привязку тегов внутри страницы. Всякий раз, когда вы помещаете данные в URL-адрес, вам нужно закодировать URL-адрес. В JavaScript вы можете использовать encodeURIComponent(). На других языках вам нужно будет найти документацию.

2

# указывает опорную часть URL-адреса, которая используется для идентификации определенной позиции в документе, возвращаемом остальной частью URL-адреса. Он технически известен как Fragment portion of the URI.

Все, что соответствует #, является частью этого. Поскольку это имеет значение только после того, как документ будет возвращен и обработан (опять же, он представляет собой позицию в этом документе), это только интересно для клиента. Он не имеет никакого значения или значения для сервера, и клиент будет обрабатывать все значение как одно значение (если, конечно, вы не предоставляете дополнительный пользовательский код, чтобы разбить значение и извлечь из него дополнительный смысл).

Если вам нужно передать символ # как часть значения в URL, замените его %23 - вы можете сделать это программно с помощью URL Encoding, который заменит все «специальные» символы с единицами, которые являются приемлемыми для транспорта через URI.

2

Как правило, это хорошая идея для URLENCODE параметров вашего запроса, прежде чем отправлять их на сервер. # В URL-адресе используется для представления того, на каком якоре вы находитесь в данный момент, и вызовет проблемы при попытке отправить его на сервер.

Более подробную информацию по URL кодирования можно найти здесь: http://www.w3schools.com/tags/ref_urlencode.asp

2

"#" - специальный символ. Он ссылается на хэш, который обычно используется в привязках страниц. Вы можете просто закодировать этот символ% 23 в URL-адресе, и это устранит проблему. Другие значащие персонажи? [пробел] &