Учебники

JSP — Обработка форм

В этой главе мы обсудим обработку форм в JSP. Вы, должно быть, сталкивались со многими ситуациями, когда вам нужно передать некоторую информацию из вашего браузера на веб-сервер и, в конечном итоге, в вашу бэкэнд-программу. Браузер использует два метода для передачи этой информации на веб-сервер. Эти методы — метод GET и метод POST.

Методы обработки формы

Давайте теперь обсудим методы обработки форм.

ПОЛУЧИТЬ метод

Метод GET отправляет закодированную информацию пользователя, добавленную к запросу страницы. Страница и закодированная информация разделены знаком? персонаж следующим образом —

http://www.test.com/hello?key1=value1&key2=value2

Метод GET является методом по умолчанию для передачи информации из браузера на веб-сервер, и он генерирует длинную строку, которая появляется в поле Location: вашего браузера. Рекомендуется, чтобы метод GET лучше не использовать. если у вас есть пароль или другая конфиденциальная информация для передачи на сервер.

Метод GET имеет ограничение по размеру: в строке запроса может быть только 1024 символа .

Эта информация передается с использованием заголовка QUERY_STRING и будет доступна через переменную среды QUERY_STRING, которую можно обработать с помощью методов getQueryString () и getParameter () объекта запроса.

Метод POST

Как правило, более надежным методом передачи информации в бэкэнд-программу является метод POST.

Этот метод упаковывает информацию точно так же, как метод GET, но вместо отправки ее в виде текстовой строки после символа? в URL он отправляет его как отдельное сообщение. Это сообщение поступает в бэкэнд-программу в виде стандартного ввода, который вы можете проанализировать и использовать для обработки.

JSP обрабатывает запросы такого типа, используя метод getParameter () для чтения простых параметров и метод getInputStream () для чтения потока двоичных данных, поступающих от клиента.

Чтение данных формы с использованием JSP

JSP автоматически обрабатывает данные формы, используя следующие методы в зависимости от ситуации:

  • getParameter () — Вы вызываете метод request.getParameter (), чтобы получить значение параметра формы.

  • getParameterValues ​​() — Вызовите этот метод, если параметр появляется более одного раза и возвращает несколько значений, например, флажок.

  • getParameterNames ()вызовите этот метод, если вы хотите получить полный список всех параметров в текущем запросе.

  • getInputStream () — вызывает этот метод для чтения потока двоичных данных, поступающих от клиента.

getParameter () — Вы вызываете метод request.getParameter (), чтобы получить значение параметра формы.

getParameterValues ​​() — Вызовите этот метод, если параметр появляется более одного раза и возвращает несколько значений, например, флажок.

getParameterNames ()вызовите этот метод, если вы хотите получить полный список всех параметров в текущем запросе.

getInputStream () — вызывает этот метод для чтения потока двоичных данных, поступающих от клиента.

Пример метода GET с использованием URL

Следующий URL-адрес передаст два значения программе HelloForm с помощью метода GET.

HTTP: // локальный: 8080 / main.jsp first_name = ZARA & last_name = ALI

Ниже приведена JSP-программа main.jsp для обработки ввода, получаемого от веб-браузера. Мы собираемся использовать метод getParameter (), который позволяет очень легко получить доступ к переданной информации —

<html>
   <head>
      <title>Using GET Method to Read Form Data</title>
   </head>
   
   <body>
      <h1>Using GET Method to Read Form Data</h1>
      <ul>
         <li><p><b>First Name:</b>
            <%= request.getParameter("first_name")%>
         </p></li>
         <li><p><b>Last  Name:</b>
            <%= request.getParameter("last_name")%>
         </p></li>
      </ul>
   
   </body>
</html>

Теперь введите http: // localhost: 8080 / main.jsp? First_name = ZARA & last_name = ALI в поле Location: вашего браузера. Это сгенерирует следующий результат —

Использование метода GET для чтения данных формы

  • Имя : ZARA

  • Фамилия : АЛИ

Имя : ZARA

Фамилия : АЛИ

Пример метода GET с использованием формы

Ниже приведен пример, который передает два значения, используя HTML-форму и кнопку отправки. Мы будем использовать тот же JSP main.jsp для обработки этого ввода.

<html>
   <body>
      
      <form action = "main.jsp" method = "GET">
         First Name: <input type = "text" name = "first_name">
         <br />
         Last Name: <input type = "text" name = "last_name" />
         <input type = "submit" value = "Submit" />
      </form>
      
   </body>
</html>

Сохраните этот HTML-файл в файле Hello.htm и поместите его в каталог <Tomcat-installation-directory> / webapps / ROOT . Когда вы получите доступ к http: // localhost: 8080 / Hello.htm , вы получите следующий вывод.

Имя:
Фамилия:

<p> Попробуйте ввести имя и фамилию, а затем нажмите кнопку отправки, чтобы увидеть результат на локальном компьютере, на котором запущен tomcat. На основе предоставленного ввода, он будет генерировать результат, аналогичный указанному в приведенном выше примере.


Пример метода POST с использованием формы

Давайте сделаем небольшую модификацию в вышеупомянутой JSP для обработки как метода GET, так и метода POST. Ниже приведена JSP-программа main.jsp, которая обрабатывает ввод данных через веб-браузер с использованием методов GET или POST.

Infact нет никаких изменений в вышеупомянутой JSP, потому что изменен единственный способ передачи параметров и никакие двоичные данные не передаются в программу JSP. Понятия, связанные с обработкой файлов, будут объяснены в отдельной главе, где нам нужно прочитать поток двоичных данных.

<html>
   <head>
      <title>Using GET and POST Method to Read Form Data</title>
   </head>
   
   <body>
      <center>
      <h1>Using POST Method to Read Form Data</h1>
      
      <ul>
         <li><p><b>First Name:</b>
            <%= request.getParameter("first_name")%>
         </p></li>
         <li><p><b>Last  Name:</b>
            <%= request.getParameter("last_name")%>
         </p></li>
      </ul>
   
   </body>
</html>

Ниже приводится содержимое файла Hello.htm

<html>
   <body>
      
      <form action = "main.jsp" method = "POST">
         First Name: <input type = "text" name = "first_name">
         <br />
         Last Name: <input type = "text" name = "last_name" />
         <input type = "submit" value = "Submit" />
      </form>
      
   </body>
</html>

Давайте теперь сохраним main.jsp и hello.htm в каталоге <Tomcat-installationdirectory> / webapps / ROOT . При доступе к http: // localhost: 8080 / Hello.htm вы получите следующий вывод.

Имя:
Фамилия:

Попробуйте ввести имя и фамилию, а затем нажмите кнопку отправки, чтобы увидеть результат на локальном компьютере, на котором запущен tomcat.

На основании предоставленных данных вы получите результаты, аналогичные приведенным выше.


Передача данных флажка в программу JSP

Флажки используются, когда требуется выбрать более одной опции.

Ниже приведен пример HTML-кода CheckBox.htm для формы с двумя флажками.

<html>
   <body>
      
      <form action = "main.jsp" method = "POST" target = "_blank">
         <input type = "checkbox" name = "maths" checked = "checked" /> Maths
         <input type = "checkbox" name = "physics"  /> Physics
         <input type = "checkbox" name = "chemistry" checked = "checked" /> Chemistry
         <input type = "submit" value = "Select Subject" />
      </form>
      
   </body>
</html>

Приведенный выше код сгенерирует следующий результат —

математика физика Химия

Далее следует программа JSP main.jsp для обработки ввода, заданного веб-браузером для кнопки-флажка.

<html>
   <head>
      <title>Reading Checkbox Data</title>
   </head>
   
   <body>
      <h1>Reading Checkbox Data</h1>
      
      <ul>
         <li><p><b>Maths Flag:</b>
            <%= request.getParameter("maths")%>
         </p></li>
         <li><p><b>Physics Flag:</b>
            <%= request.getParameter("physics")%>
         </p></li>
         <li><p><b>Chemistry Flag:</b>
            <%= request.getParameter("chemistry")%>
         </p></li>
      </ul>
   
   </body>
</html>

Вышеуказанная программа сгенерирует следующий результат —

Reading Checkbox Data

  • Maths Flag : : on

  • Physics Flag: : null

  • Chemistry Flag: : on

Maths Flag : : on

Physics Flag: : null

Chemistry Flag: : on

Чтение всех параметров формы

Ниже приведен общий пример, который использует метод getParameterNames () HttpServletRequest для чтения всех доступных параметров формы. Этот метод возвращает перечисление, которое содержит имена параметров в неуказанном порядке.

Как только у нас будет Enumeration, мы можем зациклить Enumeration стандартным способом, используя метод hasMoreElements (), чтобы определить, когда остановиться, и используя метод nextElement (), чтобы получить имя каждого параметра.

<%@ page import = "java.io.*,java.util.*" %>

<html>
   <head>
      <title>HTTP Header Request Example</title>
   </head>

   <body>
      <center>
         <h2>HTTP Header Request Example</h2>
         <table width = "100%" border = "1" align = "center">
            <tr bgcolor = "#949494">
               <th>Param Name</th>
               <th>Param Value(s)</th>
            </tr>
            <%
               Enumeration paramNames = request.getParameterNames();
               while(paramNames.hasMoreElements()) {
                  String paramName = (String)paramNames.nextElement();
                  out.print("<tr><td>" + paramName + "</td>\n");
                  String paramValue = request.getHeader(paramName);
                  out.println("<td> " + paramValue + "</td></tr>\n");
               }
            %>
         </table>
      </center>
   
   </body>
</html>

Ниже приводится содержание Hello.htm

<html>
   <body>
      
      <form action = "main.jsp" method = "POST" target = "_blank">
         <input type = "checkbox" name = "maths" checked = "checked" /> Maths
         <input type = "checkbox" name = "physics"  /> Physics
         <input type = "checkbox" name = "chemistry" checked = "checked" /> Chem
         <input type = "submit" value = "Select Subject" />
      </form>
   
   </body>
</html>

Теперь попробуйте вызвать JSP с помощью приведенного выше Hello.htm; это сгенерирует результат, подобный приведенному ниже, на основе предоставленного ввода —

Чтение всех параметров формы

Имя параметра Значение параметра (ов)
математика на
химия на

Вы можете попробовать вышеупомянутую JSP, чтобы прочитать данные любой другой формы, имеющие другие объекты, такие как текстовое поле, переключатель или раскрывающийся список и т. Д.