English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Когда мы просматриваем веб-страницы, нам часто нужно передавать информацию на сервер и обрабатывать её на заднем плане. В браузере данные передаются на сервер с помощью методов GET и POST.
Метод GET добавляет кодировочную информацию в конце URL, которая разделена от URL символом "?". Пример:
http://ru.oldtoolbag.com/hello?key1=value1&key2=value2
Метод GET является методами по умолчанию для передачи параметров браузером, рекомендуется не использовать метод GET для конфиденциальной информации, такой как пароли и т.д.
При использовании get размер передаваемых данных ограничен (не ограничен количество параметров), максимальный размер составляет 1024 байта.
Некоторые конфиденциальные данные, такие как пароли и т.д., можно передавать с помощью метода POST, данные POST-запроса являются скрытыми.
Данные POST-запроса не видны, GET передается через URL (можно посмотреть в адресной строке браузера).
JSP использует getParameter() для получения переданных параметров, метод getInputStream() используется для обработки запросов двоичных данных потока клиента.
getParameter(): Использование метода request.getParameter() для получения значений параметров формы.
getParameterValues(): Получение данных, таких как checkbox (имена одинаковые, но значения несколько), принимающих массив переменных, таких как тип checkbox
getParameterNames():Этот метод может получить все имена переменных, он возвращает Enumeration.
getInputStream():Этот метод используется для чтения двоичных данных потока клиента.
Ниже приведен пример простого 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, и результат будет следующим:
Ниже приведен пример простого 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 для передачи данных формы. Измените код файлов 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, как показано ниже:
Флажки 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 для чтения других объектов, таких как текстовые поля, флажки или выпадающие списки и т.д.