Как передать строку, содержащую двойные кавычки из jsp в сервлет через URL, используя метод get - PullRequest
3 голосов
/ 29 июля 2010

Я хочу установить для параметра jsp значение атрибута, которое может содержать специальные символы, а затем использовать форму GET submit для передачи параметра в контроллер сервлета.Например, параметр:

<input type="hidden" name="searchTerms" value="${sessionScope.combTerms}"></input>

Я заметил, если sessionScope.combTerms содержит двойные кавычки, например.location:"LOC1", контроллер получит только значение searchTerms, равное location:, при котором LOC1" исчез.Что я должен сделать, чтобы убедиться, что любая строка в sessionScope.combTerms правильно передана в контроллер?Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 29 июля 2010

При заполнении входных значений HTML всегда используйте fn:escapeXml().Он не только очищает значение от сущностей HTML, которые могут подвергнуть ваш HTML ошибкам (кавычка обозначает конец значения атрибута, поэтому остаток вашего значения потерян), но также спасет вас от XSS-инъекции риск атаки в местах, где вы повторно отображаете контролируемый пользователем ввод.

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<input type="hidden" name="searchTerms" value="${fn:escapeXml(sessionScope.combTerms)}">

Нет необходимости в URLEncode.Веб-браузер уже сделает это автоматически.Попробуйте сами с & в значении.Вы увидите, что веб-браузер меняет его %26.Веб-браузер также позаботится о разборе XML-сущностей, чтобы они правильно оказались в URL-адресе.Т.е. вы получаете " на стороне сервера, а не &#34;.

2 голосов
/ 02 июля 2012
<% String st = str.replaceAll("\"", "&quot;");%> ,and use st instead of str.
1 голос
/ 29 июля 2010

Вы кодируете значение перед помещением его в форму, а затем декодируете его в serlvet.

(Возможно, вы уже видели это как% 20 в параметрах URL)

Вотсоответствующие классы.

http://download -llnw.oracle.com / javase / 1.5.0 / docs / api / java / net / URLEncoder.html

http://download -llnw.oracle.com / JavaSE / 1.5.0 / документы / API / Java / сеть / URLDecoder.html

...