`
ljhupahu
  • 浏览: 33786 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Form 的GET与POST的区别

 
阅读更多

转自: http://joe5456536.blog.163.com/blog/static/8537477320123176154590/

表单form中的“method=get”与“method=post”的区别:

使用get时,form数据集被附加到form元素的action属性所指定的URI后面。使用post时,form数据集被包装在请求的body中并被发送。

区别:

1、  安全性
如果用get提交一个验证用户名和密码的form,一般认为是不安全的,因为用户名和密码将出现在URL上,进而出现在浏览器的历史记录中。显然,在对安全性有要求的情况下,应该使用post。

2、  编码

get只能向服务器发送ASCII字符,而post则可以发送整个ISO10646(Unicode)中的字符。

3、  提交的数据长度

IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度,如果URL超出了这个限制,提交form时IE不会有任何反映。

4、  缓存

由于一个get得到的结果直接对应到一个URI,所以get的结果页面有可能被浏览器缓存。而post一般则不能

5、  引用和SEO

可以用一个URI引用一个get的结果页面,而post的结果则不能,所以必然不能被搜索引擎搜到。



请求中的中文显示

  由于Tomcat/Jboss Server 对请求字符串的编码为ISO8895-1,而ISO8859-1只支持英文和西欧文字,不支持中文字符,所以当为中文字符时,会出现乱码。为了解决这种问题通常有以下的办法:

①  当form表单中的method=”GET”时,要在Tomcat/JBoss6.0 中的server.xml 中的

<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"/>

添加 URIEncoding="UTF-8"

<a href="welcome.jsp?name=王二">王二</a> 用上面的方法也能显示中文

②  当form表单中的method=”POST”时,需要在Servlet Class 文件中添加request.setCharacterEncoding("UTF-8");

或是写个Filter Class 文件:

public class SetCharacterEncodingFilter implements Filter {

          protected String encoding = null;
     protected FilterConfig filterConfig = null; 
     protected boolean ignore = true;

          @Override 
     public void destroy() { 
        this.encoding = null; 
        this.filterConfig = null; 
     }

   @Override 
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws 
            IOException,ServletException{

      if (ignore || (request.getCharacterEncoding() == null)) { 
           String characterEncoding = selectEncoding(request); 
           if (characterEncoding != null)  
             request.setCharacterEncoding(characterEncoding); 
        }

      // Pass control on to the next filter 
        chain.doFilter(request, response);

   }

   @Override 
     public void init(FilterConfig fConfig) throws ServletException {

           this.filterConfig = fConfig; 
        this.encoding = fConfig.getInitParameter("encoding"); 
        String value = fConfig.getInitParameter("ignore");

            if (value == null) this.ignore = true;

            else if (value.equalsIgnoreCase("true")) this.ignore = true;

            else if (value.equalsIgnoreCase("yes")) this.ignore = true;

            else this.ignore = false;

   }

   protected String selectEncoding( @SuppressWarnings("unused") ServletRequest request){

               return (this.encoding);

   }

}

然后在web.xml中添加:

<filter>
              <filter-name>Set Character Encoding</filter-name>
              <filter-class>com.demo.filters.SetCharacterEncodingFilter</filter-class>
              <init-param>
                       <param-name>encoding</param-name>
                       <param-value>UTF-8</param-value>
              </init-param>
       </filter>
   <filter-mapping>
              <filter-name>Set Character Encoding</filter-name>
              <url-pattern>/*</url-pattern>
   </filter-mapping>

③ 在Servlet Class 文件中 添加:

String username = request.getParameter("username");

username = new String(username.getBytes("ISO8859-1"),"UTF-8");

这种方法对“GET”和“POST”都有效。

在JPS文件中要把所有的charSet值都要改为“UTF-8”:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">



字符集兼容顺序:ASCII →ISO8859-1→GB2312→GBK→GB18030→ISO10646/Unicode(UTF-8)

ASCII:只支持英文。ISO8859-1支持英文和西欧文字。BG2312、GBK、GB18030支持英文、西欧文、中文。

ISO10646/Unicode(UTF-8)支持全球所有文字。
分享到:
评论

相关推荐

    浅析Get与Post的区别

    浅析Get与Post的区别 Get和Post是两种常用的表单提交方式,在Web开发中经常被使用。但是,很多人并不了解这两种方式的区别,导致在实际开发中出现问题。本文将详细阐述Get和Post的区别,以便读者更好地理解和使用这...

    GET与POST的区别

    "GET与POST的区别" GET和POST是HTTP协议中两种最常用的请求方法,它们都是用来从客户端向服务器端发送请求的,但它们之间有很多不同之处。 GET方法 GET方法是从服务器上获取数据的请求方法。它的主要特点是将参数...

    ajax POST 与GET提交的区别

    ### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...

    关于HTML的Form的get和post

    HTML的Form是网页中用于收集用户输入数据的重要元素,它提供了两种主要的提交方式:GET和POST。这两种方法在处理用户交互和数据传输时有着不同的特性和用途。 **GET方法** GET方法是最常见的一种提交方式,它将表单...

    表单提交中get和post的区别

    例如,假设我们有一个表单,包含一个文本框,名称为“Text”,那么在get方式中,提交的URL将是“getpost.asp?Text=http://leewei.blogchina.com”。而在post方式中,表单内各个字段与其内容将被放置在HTML HEADER内...

    get和post的区别

    ### GET与POST方法的区别 在Web开发中,GET与POST是最常见的两种HTTP请求方式,它们在功能、安全性、数据传输等方面存在显著差异。本文将基于提供的文件内容对这两种方法进行详细解析。 #### 1. 基本概念 - **GET...

    get与post实例

    本文将深入探讨GET和POST的区别、应用场景以及VB(Visual Basic)中如何使用它们。 GET和POST是HTTP请求的核心方法,用于从服务器获取数据或向服务器发送数据。GET主要用于从服务器获取资源,它的参数通常显示在URL...

    GET与POST用法

    #### GET与POST的区别 - **数据位置**:GET方法将参数附加在URL中,而POST方法将参数放在请求体中。 - **安全性**:由于GET方法将参数暴露在URL中,因此不适合传输敏感信息;POST方法相对更安全。 - **数据大小限制...

    Ajax中get与post请求详解

    Ajax 技术中 get 与 post 两种请求方式是许多开发者经常遇到的疑问,以下将详细解释两者的区别,并提供实例代码。 一、get 与 post 的基本区别 1. 参数传递方式:get 请求将参数数据队列加到提交表单的 ACTION ...

    GET请求和POST请求的区别(详细)

    #### 四、GET与POST的主要区别 1. **数据位置**:GET将参数数据队列加到URL中,而POST则将数据放在HTTP消息头内。 2. **数据可见性**:GET方式数据可见,而POST方式数据不可见。 3. **数据大小**:GET方式的数据量...

    C# 使用Get和Post请求获取数据

    总结来说,C#中的GET和POST请求是与服务器交互的基础,它们分别适用于不同的数据传输场景。GET请求用于获取信息,数据通过URL传递;而POST请求用于提交数据,数据包含在请求体中,适合传递大量或敏感信息。在C#的Web...

    C# post方式提交Form表单

    在Form表单提交中,POST方法会将表单数据封装在请求体中发送到服务器,而不是像GET那样将其附加到URL后面。这样可以确保数据的安全性,并且对数据长度没有限制。 二、C#实现POST表单提交的步骤 1. 创建HTTP客户端:...

    jsp中post和get传输方式的区别

    ### jsp中post和get传输方式的区别 在Web开发领域,特别是使用Java Server Pages (JSP) 进行网页开发时,GET与POST是两种最常见的HTTP请求方法。这两种方法各有其适用场景及特点,理解它们之间的区别对于提高网站的...

    html页面模式get/post请求

    了解了这些基础知识后,你可以创建一个简单的HTML页面,如`formsubmit.html`,用来模拟对某个API的GET和POST请求,特别是使用JSON格式传递POST数据。这对于测试API接口或者进行前端开发验证非常有帮助。通过这种方式...

    HttpTest Get与Post示例

    一、HTTP GET与POST的区别 1. GET:主要用来获取资源,它是幂等的,即多次执行同一个GET请求,结果是一样的。参数通过URL传递,显示在地址栏中,一般对数据量有限制,通常不超过2KB。 2. POST:常用于提交数据,可以...

    提交方式由get转post

    一个很简单很实用的将html中的a标签的get提交转换成form的post提交的小插件

    Get 与 Post

    **ASP.NET中的GET与POST处理**: 在ASP.NET中,我们通常使用ASPX页面来处理HTTP请求。对于GET请求,参数会出现在URL中,可以直接通过`Request.QueryString`访问;而对于POST请求,数据在请求体中,我们可以使用`...

    VB6Get和POST请求异步处理请求

    首先,让我们了解一下GET和POST的区别。GET方法是向服务器发送一个查询,通常用于获取资源,例如网页、图片等。它将参数附加到URL上,因此请求的数据量有限,且请求历史会被浏览器记录。POST方法则更适用于提交数据...

    Go语言中的gin框架之GET/POST请求参数接收传值(五)

    在Go语言中,Gin框架是一个...总结,Gin框架在处理GET和POST请求参数时提供了多种方法,包括从URL查询字符串、JSON请求体以及Form数据中获取参数。这使得Gin成为构建Web服务的强大工具,特别是在Go语言的生态系统中。

Global site tag (gtag.js) - Google Analytics