отправка java / html-форм -> request.getParameter ("..."); возвращает только первую часть строки? - PullRequest
0 голосов
/ 06 июля 2011

Я не уверен, как сформулировать мой вопрос. но у меня есть html-форма для отправки данных в бэкэнд Java, который обрабатывает данные и передает их в базу данных.

Java-форма захватывает каждое из моих значений с помощью библиотеки javax.servlet.http.HttpServletRequest

так, чтобы получить значение:

<input type="text" name="firstName">

На странице Java я бы сделал:

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

это прекрасно работает, однако если мой ввод состоит из двух слов, он вернет только первое.

скажем, я вставил "Джон Джордж" для моего первого имени, Страница Java будет получать только «Джон».

Я не могу понять, почему.

Код формы:

   foot =  "<form method='POST' action='Submit'>";
    //path to java servlet 
    foot += "<input type='hidden' name='firstName' value="+firstName+">"; 
    foot += "<input type='hidden' name='lastName' value="+lastName+">"; 
    foot += "<input type='hidden' name='school' value="+school+">"; 
    foot += "<input type='hidden' name='email' value="+email+">"; 

Ответы [ 3 ]

0 голосов
/ 06 июля 2011

Каждое значение атрибута должно быть заключено в кавычки. Ваши атрибуты заключены в кавычки (с которыми может справиться большинство браузеров), но ваши атрибуты значения не имеют никакой кавычки. Итак, ваш вывод выглядит примерно так:

<input type='hidden' name='firstName' value=John George>

Поскольку значение не заключено в кавычки, браузер интерпретирует «John» как значение атрибута value и «George» как новый атрибут без значения.

Заключение вашего атрибута значения в кавычки должно исправить это.

foot =  "<form method=\"POST\" action=\"Submit">";
//path to java servlet 
foot += "<input type=\"hidden\" name=\"firstName\" value=\""+firstName+"\">"; 
foot += "<input type=\"hidden\" name=\"lastName\" value=\""+lastName+"\">"; 
foot += "<input type=\"hidden\" name=\"school\" value=\""+school+"\">"; 
foot += "<input type=\"hidden\" name=\"email\" value=\""+email+"\">"; 
0 голосов
/ 06 июля 2011

Учитывая, что firstName = "John George" this: "<input type='hidden' name='firstName' value="+firstName+">"; отображает в HTML значение

<input type='hidden' name='firstName' value=John George>

Таким образом, "Джордж" интерпретируется как атрибут.Пожалуйста, попробуйте правильно добавить цитаты:

"<input type='hidden' name='firstName' value='" + firstName + "'>"
0 голосов
/ 06 июля 2011

Причина довольно проста: посмотрите исходный код HTML в вашем браузере, и вы увидите:

<input type='hidden' name='firstName' value=John George>

Итак, у вас есть элемент input с 4 атрибутами, а последний атрибут - George.

Решение:

  1. Не забудьте процитировать ваши строки
  2. НИКОГДА забудьте об экранирующих HTML текстовых значениях, которые вы добавляете в HTML

Второй пункт позволяет вредным людям делать очень неприятные вещи с вашим веб-сайтом. См. Межсайтовый скриптинг .

Таким образом, правильный код будет:

foot += "<input type='hidden' name='firstName' value='"+StringEscapeUtils.escapeHtml(firstName)+"'>"; 

StringEscapeUtils можно найти в commons-lang .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...