2016-01-04 2 views
0

У меня есть класс, который требует доступа к объекту запроса.java - request.getParameter Автоматически Преобразует закодированный HTML в эквивалентный символ ASCII

имеет подобный код:

String param = request.getParameter("param"); 

Он отлично работает для обычных param значений, как, скажем, xyz, abc и т.д.

Но когда param содержит escapedHTML как , или " то в запросе они передаются как это (я проверил использование debug в eclipse), но когда я пытаюсь получить эти параметры из объекта запроса, они преобразуются обратно в их эквивалентное представление символов ASCII.

Так сказать Если param содержит Banana,Apple Это будет получено как Banana,Apple и так далее.

т.е.

Request: /myserv.serv?param=Banana,Apple

Так что мой вопрос: Как получить Исходное значение из запроса? и Как остановить это автоматическое преобразование?

Заранее спасибо.

+1

Попробуйте 'request.getQueryString()' и разделить '&' и '=', чтобы получить исходный параметр запроса – Braj

+1

лучше избегать символов при определении значений параметров. Как сервер приложений знает, что «&» была фактически частью значения, а не маркером для определения следующего набора пар имя/значение? –

+0

Это обычно происходит, когда кодировка в jsp отличается от кодировки по умолчанию для серверной платформы (charset). Вы можете попробовать вызвать ServletRequest.setCharacterEncoding перед вызовом любого из методов request.getParameter –

ответ

0

Линия запроса HTTP находится в кодировке Percent. Использование URLDecoder неверно, потому что оно должно использоваться для application/x-www-form-urlencoded. Да, это имя вводит в заблуждение, но так оно и есть.

Go с ответом @Braj предложил в комментариях:

Попробуйте request.getQueryString() и разбивка по & и =, чтобы получить оригинальный из параметров запроса.

+0

Невозможно использовать 'request.getQueryString()'. coz Request является POST, и он возвращает 'null' для запроса' POST'. –

Смежные вопросы