Как я могу получить данные HTML внутри сервлета Java? - PullRequest
0 голосов
/ 01 марта 2011

Добрый день!

Как получить доступ к значению текстового поля HTML внутри сервлета? Мой пример кода выглядит следующим образом:

        out.println("<html><head></head>");
        out.println("<body>");
        out.println("Item not found...");
        out.println("<h2>Add Item:</h2>");
        out.println("<form action = \"AddandSearch\">"); 
        out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
        out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
        out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
        out.println("<input type =\"submit\" value =\"Add Item\">");
        out.println("</form>");
        out.println("</body>");
        out.println("</html>");

Мне нужно получить значение имени, цены за единицу и запаса после того, как пользователь нажмет кнопку, чтобы я мог поместить его в массив. Можно ли назначить его на тот же сервлет? Я пытался использовать этот код:

String id = request.getParameter("name");

но это не работает, потому что кнопка должна быть нажата первой. Могу ли я использовать метод получения и установки или что-то подобное? Мне нужно текстовое поле для ввода данных, и это должно быть сделано внутри сервлета. Результат также должен быть сгенерирован внутри того же сервлета. Спасибо.

Ответы [ 5 ]

3 голосов
/ 02 марта 2011

Я пытался использовать этот код: String id = request.getParameter("name");, но он не работает, потому что кнопка должна быть нажата первой.

Вам сделать необходимо использовать getParameter(...).Но я подозреваю, что вы пытались сделать это тем же методом doGet(...), который создал форму HTML ... перед отправкой ответа, содержащего этот HTML, пользователю.

Что должно произойти, это:

  1. Создайте HTML и отправьте автору.
  2. Возврат из doGet(...).

  3. Подождите, пока пользователь нажмет кнопку отправки.кнопка.

  4. Получите новый вызов по методу doGet(...).
  5. Выясните, что это запрос AddandSearch ... например, посмотрев на URI запроса
  6. Вызовите getParameter("name"), чтобы получить параметр.

Учитывая, что ваш сервлет (сейчас) обрабатывает запросы из разных форм, метод doGet должен отправлять различные части вашего кода (например,различные методы) для обработки каждого типа формы.


(Мы также упоминали здесь и в других местах, что внедрение HTML в ваш код подобным образом не является хорошей инженерной практикой. Лучше использовать JSP + JSTL,или какая-то другая шаблонная технология.

Но если это то, чтоваш инструктор сказал вам сделать для этого упражнения, плыть по течению.У него может быть веская причина ... например, что у него нет времени для изучения JSP, JSTL и других "продвинутых" вещей Java EE.Перегрузка учебной программы может быть серьезной проблемой.)

1 голос
/ 01 марта 2011

это не работает, потому что сначала нужно нажать кнопку

Я думаю, что вы только что ответили на свой вопрос прямо здесь.

1 голос
/ 01 марта 2011
String id = (request.getParameter("name")==null)?"nothing here":request.getParameter("name");

Вы обрабатываете это в методе doGet () сервлета обработки AddandSearch?Вам, вероятно, следует использовать method = "post" (так как действие называется "add", которое дает намек на постоянство) и обрабатывать его в методе doPost ().

0 голосов
/ 18 апреля 2013

ваша кнопка отправки формы должна иметь имя.

out.println("<html><head></head>");
    out.println("<body>");
    out.println("Item not found...");
    out.println("<h2>Add Item:</h2>");
    out.println("<form action = \"AddandSearch\">"); 
    out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
    out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
    out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
    out.println("<input type =\"submit\" name=\"submit\" value =\"Add Item\">");
    out.println("</form>");
    out.println("</body>");
    out.println("</html>");

А при нажатии кнопки отправки перенаправить на тот же сервлет и

if(request.getParameter("submit")!=null)
{

      //your code to handle form submission 
}
else
{
out.println("<html><head></head>");
    out.println("<body>");
    out.println("Item not found...");
    out.println("<h2>Add Item:</h2>");
    out.println("<form action = \"AddandSearch\">"); 
    out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
    out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
    out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
    out.println("<input type =\"submit\" name=\"submit\" value =\"Add Item\">");
    out.println("</form>");
    out.println("</body>");
    out.println("</html>");
}
0 голосов
/ 18 апреля 2013

в методе doGet, вы можете использовать этот синтаксис для получения значения,

String title = request.getParameter("title");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...