HTTP/1.1协议中共定义了八种方法来代表Request-URI指定的资源的不一样操做方式:
方法名称区分大小写。html
ps.
当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);
当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。java
GET产生一个TCP数据包;POST产生两个TCP数据包!web
GET:浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
POST: 浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。spring
中文乱码:
Post方式:在JSP中request解析数据时设置编码格式:request.setCharacterEncoding("utf-8"); 也可使用Spring的CharacterEncodingFilter统一setCharacterEncoding。windows
<!-- characterEncodingFilter字符编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <!--要使用的字符集,通常咱们使用UTF-8(保险起见UTF-8最好)--> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <!--是否强制设置request的编码为encoding,默认false,不建议更改--> <param-name>forceRequestEncoding</param-name> <param-value>false</param-value> </init-param> <init-param> <!--是否强制设置response的编码为encoding,建议设置为true--> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <!--这里不能留空或者直接写 ' / ' ,否者不起做用--> <url-pattern>/*</url-pattern> </filter-mapping>
CharacterEncodingFilter: private String encoding; //要使用的字符集,通常咱们使用UTF-8(保险起见UTF-8最好) private boolean forceRequestEncoding = false; //是否强制设置request的编码为encoding private boolean forceResponseEncoding = false; //是否强制设置response的编码为encoding @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String encoding = getEncoding(); if (encoding != null) { //若是设置了encoding的值,则根据状况设置request和response的编码 //若设置request强制编码或request自己就没有设置编码则设置编码为encoding表示的值 if (isForceRequestEncoding() || request.getCharacterEncoding() == null) { request.setCharacterEncoding(encoding); } //若设置response强制编码,则设置编码为encoding表示的值 if (isForceResponseEncoding()) { response.setCharacterEncoding(encoding); } } filterChain.doFilter(request, response); }
Get方式: 对url编码encodeURI; 修改tomcat的配置server.xml <Connector> URIEncoding="UTF-8"。浏览器
<!-- windows --> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector port="8099" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
引贴: GET和POST两种基本请求方法的区别tomcat