JSP - Обработка форм
В этой главе мы обсудим обработку форм в JSP. Вы, должно быть, сталкивались со многими ситуациями, когда вам нужно было передать некоторую информацию из вашего браузера на веб-сервер и, в конечном итоге, в вашу бэкэнд-программу. Браузер использует два метода для передачи этой информации на веб-сервер. Эти методы - метод GET и метод POST.
Методы обработки форм
Давайте теперь обсудим методы обработки форм.
GET метод
Метод GET отправляет закодированную информацию о пользователе, добавленную к запросу страницы. Страница и закодированная информация разделяются знаком? характер следующим образом -
http://www.test.com/hello?key1=value1&key2=value2
Метод GET - это метод по умолчанию для передачи информации из браузера на веб-сервер, и он создает длинную строку, которая появляется в вашем браузере. Location:box. Рекомендуется не использовать метод GET. если у вас есть пароль или другая конфиденциальная информация для передачи на сервер.
Метод GET имеет ограничение по размеру: only 1024 characters can be in a request string.
Эта информация передается с использованием QUERY_STRING header и будет доступен через переменную среды QUERY_STRING, которую можно обработать с помощью getQueryString() и getParameter() методы объекта запроса.
Метод POST
Обычно более надежным методом передачи информации в серверную программу является метод POST.
Этот метод упаковывает информацию точно так же, как метод GET, но вместо того, чтобы отправлять ее в виде текстовой строки после символа? в URL-адресе он отправляет его как отдельное сообщение. Это сообщение поступает в бэкэнд-программу в виде стандартного ввода, который вы можете проанализировать и использовать для обработки.
JSP обрабатывает этот тип запросов, используя getParameter() метод чтения простых параметров и getInputStream() метод чтения потока двоичных данных, поступающих от клиента.
Чтение данных формы с использованием JSP
JSP обрабатывает парсинг данных формы автоматически, используя следующие методы в зависимости от ситуации:
getParameter() - Вы звоните request.getParameter() для получения значения параметра формы.
getParameterValues() - Вызовите этот метод, если параметр появляется более одного раза и возвращает несколько значений, например флажок.
getParameterNames() - Вызовите этот метод, если вы хотите получить полный список всех параметров в текущем запросе.
getInputStream() - Вызовите этот метод для чтения потока двоичных данных, поступающего от клиента.
Пример метода GET с использованием URL
Следующий URL-адрес передаст два значения программе HelloForm с помощью метода GET.
http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI
Ниже main.jspПрограмма 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:box. Это даст следующий результат -
Использование метода GET для чтения данных формы
|
Пример метода GET с использованием формы
Ниже приведен пример, в котором два значения передаются с помощью HTML FORM и кнопки отправки. Мы собираемся использовать тот же 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 directory. Когда вы получите доступhttp://localhost:8080/Hello.htm, вы получите следующий результат.
<p> Попробуйте ввести имя и фамилию, а затем нажмите кнопку отправки, чтобы увидеть результат на локальном компьютере, на котором запущен tomcat. На основе предоставленных входных данных будет получен результат, аналогичный упомянутому в приведенном выше примере.Пример метода POST с использованием формы
Давайте сделаем небольшую модификацию в приведенном выше JSP, чтобы обрабатывать как GET, так и метод POST. Нижеmain.jsp Программа JSP для обработки ввода, предоставленного веб-браузером, с использованием методов GET или POST.
Фактически, в приведенном выше 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 directory. Когда вы получаете доступhttp://localhost:8080/Hello.htm, вы получите следующий результат.
Попробуйте ввести имя и фамилию, а затем нажмите кнопку отправки, чтобы увидеть результат на вашем локальном компьютере, на котором запущен tomcat.
На основе предоставленных входных данных вы получите те же результаты, что и в приведенных выше примерах.
Передача данных флажка в программу JSP
Флажки используются, когда требуется выбрать более одного параметра.
Ниже приведен пример HTML code, 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
Чтение всех параметров формы
Ниже приводится общий пример, в котором используется 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, чтобы прочитать данные любой другой формы, в которой есть другие объекты, такие как текстовое поле, переключатель или раскрывающийся список и т. Д.