1. GET используется для получения данных с сервера, в то время как POST используется для передачи данных на сервер.
2. Get добавляет данные в форму в URL -адрес, указанный действием в форме переменной = значение, и использует A? соединение между ними, в то время как и соединение между каждой переменной; Post предназначен для размещения данных в форму в корпусе данных и передать их на URL -адрес, указанный действием, как переменная и значение соответствуют значению.
3. get небезопасно, потому что во время процесса передачи данные помещаются в запрошенный URL. В настоящее время многие существующие серверы, прокси -серверы или пользовательские агенты записывают запрошенной URL -адрес в файл журнала, а затем поместят его куда -нибудь, чтобы третьи лица могли увидеть некоторую информацию о конфиденциальности. Кроме того, пользователи также могут непосредственно увидеть представленные данные в браузере, и некоторые внутренние системные сообщения будут отображаться перед пользователем. Все операции поста невидимы для пользователя.
4. Количество данных, передаваемых GET, невелико, что в основном связано с ограничением длины URL; и Post может перенести большой объем данных, поэтому вы можете использовать Post только при загрузке файлов (конечно, есть другая причина, которая будет упомянута позже).
5. Получите ограничение значения набора данных форм форм, чтобы быть символами ASCII; в то время как POST поддерживает весь набор символов ISO10646. По умолчанию кодирование ISO-8859-1
6. get - это метод формы по умолчанию.
Следующее сравнение очень, очень полезно:
Я некоторое время работал над Java Web Development, и есть проблема, которая всегда беспокоит меня, что является проблемой искаженного. По сути, я ищу решения онлайн (действительно много онлайн -информации), и все они представляют, как решить такие искаженные проблемы, но лишь немногие из них ясно объясняют всю историю проблемы. Иногда после прочтения некоторых статей, я думаю, я понимаю это, но в разработке искаженная проблема выходит как призрак и действительно имеет большое значение! Эта статья представляет собой накопление некоторого понимания моей долгосрочной борьбы с искаженными кодами, и я надеюсь, что больше друзей дадут мне несколько советов и добавок.
Есть 2 метода для формы для отправки данных на сервер, давайте поговорим о Get и Post соответственно.
(I) Получите подчинение
1. Во -первых, давайте поговорим о том, как кодировать данные и отправить их на сервер, используя метод GET.
Для метода GET данные объединяются после запрошенного URL как параметров, таких как: http: // localhost: 8080/servlet? Msg = ABC
(Появится очень распространенная проблема искаженного кода. Если в URL появляются китайские или другие специальные символы, такие как: http: // localhost: 8080/servlet? Msg = Hangzhou, искаженное код легко получить на сервере), после того, как сплайдинговый URL завершен, URL -адрес браузера будет включать URL, а затем отправить его на сервер. Процесс кодирования URL состоит в том, чтобы кодировать часть URL-адреса как символы и кодировать его в код двоичного байта в соответствии с определенным методом кодирования (например: UTF-8, GBK и т. Д.), А затем каждый байт представлен строкой %xy, содержащим 3 символа, где XY-двухбитовое шестигранное представление бата. То, что я сказал здесь, может быть неясным. Для получения подробной информации, пожалуйста, смотрите введение класса Java.net.Urlencoder здесь. После понимания процесса кодирования URL мы можем увидеть два очень важных вопроса. Во-первых: символы, которые требуют кодирования URL, обычно не являются символами, не являющимися символами (вообще говоря). Проще говоря, за исключением английских букв (таких как китайский, японский и т. Д.) Все должны выполнять URL -кодирование. Следовательно, для нас, URL -код не будет искажен, когда сервер получает искаженный код. Искаженный код вызван URL, содержащим китайские или особые персонажи в URL; Второе: в каком методе кодирования url кодирует символы? Это бизнес браузера, и разные браузеры имеют разные практики. Китайские версии браузеров обычно используют GBK по умолчанию. UTF-8 также можно использовать путем установки браузера. Разные пользователи могут иметь разные настройки браузера, что приводит к различным методам кодирования. Поэтому многие веб -сайты сначала выполняют URL -кодирование, используя JavaScript для китайских или специальных символов в URL, а затем сплайсируя URL -адрес для отправки данных, то есть для создания URL -кода для браузера. Преимущество заключается в том, что веб -сайт может объединить метод кодирования для отправки данных. После завершения URL-кода текущий URL становится символом в диапазоне ASCII, а затем преобразует его в двоичный файл в методе кодирования ISO-8859-1 и отправляется вместе с заголовком запроса. Я хотел бы сказать здесь немного больше, что для метода GET нет предприятия запроса, а URL -адреса, содержащий данные, находится в заголовке запроса. Причина, по которой я использую URL Encode, заключается в: для заголовка запроса чистые данные заголовка запроса должны быть закодированы в двоичный 101010 ... В конце концов, чистые данные заголовка запроса должны передаваться в Интернете. Если вы напрямую кодируете специальные символы, такие как китайские и другие символы ISO-8859-1, информация будет потеряна, поэтому необходимо сначала выполнять кодирование URL.
2. Как серверная сторона (Tomcat) получает данные для декодирования.
Первый шаг-декодировать данные с помощью ISO-8859-1. Для метода GET Tomcat получает символы заголовка данных в диапазоне ASCII, а URL -адрес запроса содержит данные параметров. Если в параметре есть особые символы, такие как китайский, то это все еще является состоянием %XY после кодирования URL. Остановите первое, давайте поговорим об общем процессе получения данных разработчиками. Обычно каждый получает данные параметров. Объект запроса или данные, которые мы получаем, декодируется, но программа не может указать его в процессе декодирования. Здесь мы должны сказать, что многие новички говорят, что использование request.setcharacterencoding (набор символов) может указывать метод декодирования, но на самом деле это невозможно . Глядя на официальный API сервлета, существует объяснение этого метода: переопределяет название кодирования символов, используемого в организме этого запроса. Этот метод должен быть вызван до чтения параметров запроса или ввода чтения с помощью getReader (). Видно, что он бессилен, чтобы делать что -либо с методом получения. Итак, какой метод кодирования используется для декодирования данных? Это бизнес Томката. По умолчанию по умолчанию ISO-8859-1, поэтому мы можем выяснить, почему запрос GET имеет китайские параметры и почему искаженная код получен на стороне сервера. Причина в том, что UTF-8 или GBK обычно используется для кодирования URL-кода данных. Здесь декодер URL, очевидно, невозможно. В программе мы можем напрямую
Код Java
1. Новая строка (request.getParameter (name) .getBytes (iso-8859-1), метод кодирования кодирования URL, указанный клиентом)
Восстановите обратно в байт -код и декодируйте данные правильным образом. Статьи в Интернете обычно создают конфигурацию в Tomcat
XML -код
1. <порт соединителя = 8080 Protocol = http/1,1 maxthreads = 150 ConnectionTimeout = 20000 redirectport = 8443 uriencoding = gbk/>
Это позволяет Tomcat использовать указанный метод для извлечения данных. Введение декодера URL здесь
(I) отправить отправку
1. Как кодировать данные и отправить их на сервер, используя метод POST клиента (браузер).
Данные, которые должны быть переданы в методе POST, также должны быть URL -кодом, так какой метод кодирования он использует?
Если есть сегмент <meta http-equiv = content-type content = text/html; charset = набор символов (GBK, UTF-8 и т. Д.) В файле HTML, где расположена форма, тогда сообщение будет кодируется в методе кодирования, указанном здесь. Как правило, все думают, что этот код состоит в том, чтобы сообщить браузеру, какой символ установлена для интерпретации веб -страницы, поэтому веб -сайт поместит его в переднюю часть кода HTML и старается не отображаться искаженным кодом. Фактически, он также имеет еще одну функцию, чтобы указать метод кодирования кодирования URL метода Post Form Form для отправки данных . Отсюда мы видим, что для метода GET для подсчета метод кодирования URL -адреса браузера определяется настройками браузера (может быть указан в JS для унифицированной спецификации), а метод POST может быть указан разработчиком.
2. Как серверная сторона (Tomcat) получает данные для декодирования.
Если вы используете настройки по умолчанию Tomcat, и нет настройки кодирования, таких как фильтры, то он также декодирован с помощью ISO-8859-1, но запрос.setcharacterencoding (набор символов) может пригодиться.
Я обнаружил, что предпосылка того, что Tomcat делает выше, заключается в том, что в заголовке запроса не указан метод кодирования. Если метод кодирования, указанный в заголовке запроса, он будет закодирован таким образом.Рекомендуется 2 статьи, а адреса
Углубленное и простое для понимания кодирование URL: http://www.cnblogs.com/yencain/articles/1321386.html;
Проблема с кодом мусора при отправке данных с помощью метода публикации: http://wanghuan8086.javaeye.com/blog/173869
Важно использовать сообщение. Если в файле HTML есть сегмент, где расположена форма. <meta http-equiv = content-type content = text/html; charset = набор символов (GBK, UTF-8 и т. Д.)/>
Настоятельно рекомендуется отправить сообщение