English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

Когда мы просматриваем веб-страницы, нам часто нужно передавать информацию на сервер и обрабатывать её на заднем плане. В браузере данные передаются на сервер с помощью методов GET и POST.

Метод GET

Метод GET добавляет кодировочную информацию в конце URL, которая разделена от URL символом "?". Пример:

http://ru.oldtoolbag.com/hello?key1=value1&key2=value2

Метод GET является методами по умолчанию для передачи параметров браузером, рекомендуется не использовать метод GET для конфиденциальной информации, такой как пароли и т.д.

При использовании get размер передаваемых данных ограничен (не ограничен количество параметров), максимальный размер составляет 1024 байта.

Метод POST

Некоторые конфиденциальные данные, такие как пароли и т.д., можно передавать с помощью метода POST, данные POST-запроса являются скрытыми.

Данные POST-запроса не видны, GET передается через URL (можно посмотреть в адресной строке браузера).

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

JSP считывает данные формы

  • getParameter(): Использование метода request.getParameter() для получения значений параметров формы.

  • getParameterValues(): Получение данных, таких как checkbox (имена одинаковые, но значения несколько), принимающих массив переменных, таких как тип checkbox

  • getParameterNames():Этот метод может получить все имена переменных, он возвращает Enumeration.

  • getInputStream():Этот метод используется для чтения двоичных данных потока клиента.

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

Ниже приведен пример простого URL, который использует метод GET для передачи параметров URL:

http://localhost:8080/testjsp/main.jsp?name=базовый учебник сетей&url=http://ww.oldtoolbag.com

testjsp - адрес проекта.

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<h1>Чтение данных с помощью метода GET</h1>
<ul>
<li><p><b>Название сайта:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>Адрес:</b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

Далее мы открываем браузер и посещаем http://localhost:8080/testjsp/main.jsp?name=JSP-урок&url=http://ww.oldtoolbag.com, и результат будет следующим:

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

Ниже приведен пример простого HTML-формы, которая использует метод GET для отправки данных клиента до main.jsp В файле:}

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="GET">
Название сайта: <input type="text" name="name">
<br />
Адрес сайта: <input type="text" name="url" />
<input type="submit" value="Подтвердить" />
</form>
</body>
</html>

Сохраните указанный код HTML в файл test.htm. Поместите этот файл в каталог WebContent текущего проекта jsp (в同一 каталоге с main.jsp).

Через доступ http://localhost:8080/testjsp/test.html Подтвердите данные формы в файл main.jsp, как показано на рисунке:

Заполните поля "Название сайта" и "Адрес" и нажмите кнопку "Подтвердить", чтобы вывести результат.

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

Давайте теперь используем метод POST для передачи данных формы. Измените код файлов main.jsp и Hello.htm следующим образом:

Код файла main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<h1>Чтение данных с использованием метода POST</h1>
<ul>
<li><p><b>Название сайта:</b>
<%
// Решение проблемы с китайскими иероглифами
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
%>
   <%= name %>
</p></li>
<li><p><b>Адрес:</b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

В коде мы используем new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")Для преобразования кодировки и предотвращения的出现 китайских иероглифов с ошибками.

Ниже приведен отредактированный код файла test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST">
Название сайта: <input type="text" name="name">
<br />
Адрес сайта: <input type="text" name="url" />
<input type="submit" value="Подтвердить" />
</form>
</body>
</html>

Через доступ http://localhost:8080/testjsp/test.html Отправка данных формы в файл main.jsp, как показано ниже:

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

Флажки checkbox могут передавать одну или несколько данных.

Ниже приведен простой код HTML, который сохранен в файле test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox" /> Учебник основы
<input type="checkbox" name="taobao" checked="checked" /> Таобао
<input type="submit" value="Выбрать сайт" />
</form>
</body>
</html>

Указанный код в браузере выглядит следующим образом:

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<h1>Чтение данных из флажков</h1>
<ul>
<li><p><b>Выбран ли Google:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>Выбран ли базовый учебник:</b>
   <%= request.getParameter("w3codebox")%>
</p></li>
<li><p><b>Выбран ли淘宝:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

Через доступ http://localhost:8080/testjsp/test.html Отправка данных формы в файл main.jsp, как показано ниже:

после клика по "выбрать сайт":


читать все параметры формы

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

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<h1>读取所有表单参数</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>参数名</th><th>参数值</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();
   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</body>
</html>

Ниже приведено содержимое файла test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Учебник основы (oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox" /> Учебник основы
<input type="checkbox" name="taobao" checked="checked" /> 
                                                Taobao
<input type="submit" value="Выбрать сайт" />
</form>
</body>
</html>

Теперь мы посещаем файл test.htm через браузер для отправки данных, результат вывода следующий:

Через доступ http://localhost:8080/testjsp/test.html Отправка данных формы в файл main.jsp, как показано ниже:


После нажатия "Выбрать сайт":


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