Request/Response;post/get

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Request/Response;post/get相关的知识,希望对你有一定的参考价值。

参考技术A request: request对象是服务器对浏览器请求的封装

response:服务器对服务器的响应封装。

request:取出请求信息

response:添加要给浏览器的信息

HTTP协议定义了很多与服务器交互的方法:Get,Post,Put,Delete

一个url地址对应一个网络上的资源,而http中的GET(查),POST(改),PUT(增),DELETE(删)分别对应着这个资源的四种操作;

GET:用于信息的获取查询

POST:更新资源信息

问:POST和GET之间的区别?

答:

1:post提交的数据放在url之后,以问号?分隔url和数据,参数之间用&分隔;

         (eg:....../getValue?id=102&name=JC)

而post把提交的数据放在body中;

2:get提交的数据大小有限制(因为浏览器对url的长度有限制)而post没有;

3:get需要用request,QueryString来获取变量值;而post通过request,form来获取变量值;

4:get提交数据会带来安全性问题,因为数据都暴露在url后面。

request和response对象如何解决中文乱码问题?

出现中文乱码的问题,一般的原因编码和和解码不一致造成的。

技术图片
 1  /*
 2             乱码:编码和解码不一致导致的
 3             GET:你好
 4             POST:??????
 5             tomcat版本:8.5及以上版本
 6                 GET请求方式,request对象使用的字符集默认为utf-8
 7                 POST请求方式,request对象使用的字符集默认为ISO8859-1
 8                 解决:
 9                     设置request对象的字符集为utf-8
10                     request.setCharacterEncoding("utf-8");
11             tomcat版本:8.5以下版本(了解)
12                 没有设置request的字符集
13                     GET:??????
14                     POST:??????
15                 request.setCharacterEncoding("utf-8"); 只针对post方式有效
16                     GET:??????
17                     POST:你好
18                 解决:
19                     request对象默认字符集ISO8859-1
20                         1.String类中的方法:可以把获取到的ISO8859-1编码的字符串转换为字节数组
21                              byte[] getBytes(Charset charset) 使用指定的字符集把字符串转换为字节数组
22                         2.String类的构造方法:把字节输出以UTF-8的方式解码为字符串
23                             String(byte[] bytes, String charsetName) 把字节数组,根据字符集转换字符串
24          */
View Code

重点介绍一下response,我才用的tomcat8.5版本,一些详细的介绍在代码中。

具体的代码如下:(采用字节流与字符流)

技术图片
 1 import javax.servlet.ServletException;
 2 import javax.servlet.annotation.WebServlet;
 3 import javax.servlet.http.HttpServlet;
 4 import javax.servlet.http.HttpServletRequest;
 5 import javax.servlet.http.HttpServletResponse;
 6 import java.io.IOException;
 7 
 8 @WebServlet(urlPatterns = "/A_B")
 9 public class DemoRes02 extends HttpServlet 
10 
11     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
12             //test1(response);
13             test2(response);
14     
15 
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
17         doGet(request, response);
18     
19 
20     //使用字符流响应中文
21     public void test1(HttpServletResponse response) throws IOException 
22         //设置浏览器默认打开的时候采用的字符集
23         response.setContentType("text/html;charset=utf8");
24         response.getWriter().write("A_B,陈燕龙");
25     
26     //使用字节流相应中文输出中文
27     public void test2(HttpServletResponse response) throws IOException 
28         //设置浏览器默认打开的时候采用的字符集
29         response.setHeader("Content-Type","text/html;chartset=utf-8");
30         response.getOutputStream().write("我,hello".getBytes());
31     
32 
33 
View Code

 

以上是关于Request/Response;post/get的主要内容,如果未能解决你的问题,请参考以下文章

400 Bad Request HTTP Response 使用 WCF POST 通过 JQuery

post request with retrofit get response a s bad request in android

第六天-request response13-request乱码.avi;

Request和Response对象

谈一谈Http Request 与 Http Response

python 视图 (FBVCBV ) Request 和Response对象 路由系统