精华内容
下载资源
问答
  • 2020-02-04 16:29:09

    1.构造函数

    1.Response()

    创建一个新的 Response 对象。

    2.属性

    1.Response.headers 只读  Response 接口的只读属性 headers 包含与响应关联的Headers对象。

    var myHeaders = response.headers;

    一个 Headers 对象。


    2.Response.ok 只读 Response 接口的只读属性  ok 包含一个布尔值,表明响应是否成功(状态码在200-299范围内).

    var myOK = response.ok;

    3.Response.redirected 只读

    表示该 Response 是否来自一个重定向,如果是的话,它的 URL 列表将会有多个条目。

    var isRedirected = Response.redirected;

    一个布尔值 (Boolean), 如果响应来自重定向的请求, 那么将返回 true.


    4.Response.status 只读

    包含 Response 的状态码 (例如 200 表示成功)。

    let myStatus = response.status;

    一个数字(确切来讲是一个unsigned short)


    5.Response.statusText 只读

    Response 接口的 statusText只读属性包含与状态代码相对应的状态消息(例如,对于200可以确定)。

    let myStatusText = response.statusText;

    6.Response.type 只读

    包含 Response 的类型(例如,basiccors)。

    type 是Response 接口包含的一种响应类型,是只读属性.它可以是以下某一种值:

    • basic: 标准值, 同源响应, 带有所有的头部信息除了“Set-Cookie” 和 “Set-Cookie2″.
    • cors: Response 接收到一个有效的跨域请求. 部分headers和body可以被访问.
    • error: 网络错误. 没有有用的描述错误的信息。响应的状态为0,header为空且不可变。从 Response.error()中获得的响应的类型.
    • opaque: 响应 “no-cors” 的跨域请求. 严重受限.
    var myType = response.type;

    7.Response.url 只读

    接口的url只读属性Response包含响应的URL。该url 属性的值将是任何重定向后获得的最终URL。 

    var myURL = response.url;

    8.Body.body 只读

    一个简单的 getter,用于暴露一个 ReadableStream 类型的 body 内容。


    9.Body.bodyUsed 只读

    包含了一个布尔值来标示该 Response 是否读取过 Body


    3.方法

    1.Response.clone()

    创建一个 Response 对象的克隆。

    var response2 = response1.clone();

    接口的clone()方法Response创建响应对象的克隆,每种方法都相同,但存储在不同的变量中。

    clone()TypeError如果响应Body已被使用,则抛出。实际上,clone()存在的主要原因是允许Body对象的多次使用(仅当它们一次使用时)。

    2.Response.error()

    返回一个绑定了网络错误的新的 Response 对象。

    这主要与ServiceWorkers有关;如果您愿意,可以使用error方法返回错误。错误响应的type设置为error

    错误” Response永远不会真正暴露给脚本:对a的这种响应fetch()将拒绝承诺

    var errorResponse = Response.error();

    接口的error()方法Response返回Response与网络错误关联的新对象。

    3.Response.redirect()    Response 接口的 redirect() 方法返回一个可以重定向到指定 URL 的 Response 。

    var response = Response.redirect(url, status);

    url

    The URL that the new response is to originate from.

    status 可选

    用于 response 的可选的状态码 (e.g., 302.)

    是一个 Response 对象。

    错误类型:

    异常类型说明
    RangeErrorstatus 不是一个重定向的状态码。
    TypeErrorurl 不可用。

    4.Response 实现了 Body 接口,所以以下方法同样可用:

    Body.arrayBuffer()

    读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 ArrayBuffer 格式的 Promise 对象。

    5.Body.blob()

    读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 Blob 格式的 Promise 对象。

    6.Body.formData()

    读取Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 FormData 格式的 Promise 对象。

    7.Body.json()

    读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 JSON 格式的 Promise 对象。

    8.Body.text()

    读取 Response 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 USVString 格式的 Promise 对象。

    更多相关内容
  • Response重定向详情

    千次阅读 2020-07-10 16:12:33
    直接来,ResponseDemo1代码,get请求到post请求,重定向到ResponseDemo2 我的虚拟目录为 ResponseDemo1代码,302是重定向状态码,Http状态码大全 package com.lingaolu.response; import javax.servlet....

    直接来,ResponseDemo1代码,get请求到post请求,重定向到ResponseDemo2

    我的虚拟目录为

    ResponseDemo1代码,302是重定向状态码,Http状态码大全

    package com.lingaolu.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @author 林高禄
     * @create 2020-07-10-15:24
     */
    @WebServlet("/responseDemo1")
    public class ResponseDemo1 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("responseDemo1进来了......");
            // 设置状态码为302
            response.setStatus(302);
            // 动态获取虚拟目录,以后修改虚拟目录的时候就不用了修改代码
            String contextPath = request.getContextPath();
            // 设置响应头location
            response.setHeader("location",contextPath+"/responseDemo2");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    

    ResponseDemo2代码

    package com.lingaolu.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @author 林高禄
     * @create 2020-07-10-15:24
     */
    @WebServlet("/responseDemo2")
    public class ResponseDemo2 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("responseDemo2进来了......");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    

    浏览器访问,访问前

    浏览器访问,访问后

    控制台输出

    从以上结果可以看出:

    • 浏览器上的请求地址变了
    • 重定向是2次请求,一次是responseDemo1请求,一次是responseDemo2请求

    由于状态码固定是302,响应头固定是location,所以请求转发提供了更方便的方式

    void sendRedirect(String var1)

    ResponseDemo3代码

    package com.lingaolu.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @author 林高禄
     * @create 2020-07-10-15:24
     */
    @WebServlet("/responseDemo3")
    public class ResponseDemo3 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("responseDemo3进来了......");;
            // 动态获取虚拟目录,以后修改虚拟目录的时候就不用了修改代码
            String contextPath = request.getContextPath();
            response.sendRedirect(contextPath+"/responseDemo2");
    
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    

    启动,浏览器访问

    控制台输出

    我们把ResponseDemo3代码改一下,重定向到百度

    package com.lingaolu.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @author 林高禄
     * @create 2020-07-10-15:24
     */
    @WebServlet("/responseDemo3")
    public class ResponseDemo3 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("responseDemo3进来了......");;
            response.sendRedirect("http://www.baidu.com");
    
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    

    重启访问,就重定向到百度了

    从上面结果我们可以看出,重定向可以访问其他服务器的资源

    我们写一个ResponseDemo4,探索一下共享数据情况,ResponseDemo4里请求写进了一个数据name

    package com.lingaolu.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @author 林高禄
     * @create 2020-07-10-15:24
     */
    @WebServlet("/responseDemo4")
    public class ResponseDemo4 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("responseDemo4进来了......");
            request.setAttribute("name","林大帅");
            String contextPath = request.getContextPath();
            response.sendRedirect(contextPath+"/responseDemo2");
    
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    

    同时ResponseDemo2改一下,获取数据name

    重启,浏览器访问

    控制台输出:

    从上面的null可以看出,重定向不可以共享数据

    重定向的特点总结:(与之对应的------请求转发详情与特点

    • 浏览器地址栏路径发生变化,最终地址为最后转发的地址
    • 重定向是多次请求,重定向几次就几次请求,不共享数据
    • 可以访问其他服务器的资源

     

    展开全文
  • request和response的区别!!!

    万次阅读 多人点赞 2020-05-18 19:20:36
    文章目录一、request和response介绍二、request对象(一)获取请求参数(二)实现请求转发(三)作为域对象使用(四)案例:模拟查询所有门店功能三、response对象(一)向客户端发送数据(二)实现重定向 ...



    在这里插入图片描述


    一、request和response介绍


    request是代表HTTP请求信息的对象,response是代表HTTP响应信息的对象。

    当浏览器发请求访问服务器中的某一个Servlet时,服务器将会调用Servlet中的service方法来处理请求。在调用service方法之前会创建出request和response对象。

    其中request对象中封装了浏览器发送给服务器的请求信息(请求行、请求头、请求实体等),response对象中将会封装服务器要发送给浏览器的响应信息(状态行、响应头、响应实体),在service方法执行完后,服务器再将response中的数据取出,按照HTTP协议的格式发送给浏览器。

    每次浏览器访问服务器,服务器在调用service方法处理请求之前都会创建request和response对象。(即,服务器每次处理请求都会创建request和response对象)

    在请求处理完,响应结束时,服务器会销毁request和response对象。


    二、request对象


    (一)获取请求参数

    • 问题1、什么是请求参数?

    所谓的请求参数,就是浏览器发送给服务器的数据(不区分请求方式),例如:通过表单向服务器提交的用户名、密码等,或者在超链接后面通过问号提交的数据,都是请求参数。

    http://localhost/day10_res/RequestDemo1?user=李四&like=篮球&like=足球
    
    • 问题2、如何获取请求参数?
    (1)request.getParameter(String paramName)
    -- 根据请求参数的名字获取对应的参数值,返回值是一个字符串;
    -- 如果一个参数有多个值,该方法只会返回第一个值。
    -- 如果获取的是一个不存在的参数,返回值为null
    (2)request.getParameterValues(String paramName)
    -- 根据请求参数的名字获取该名字对应的所有参数值组成的数组,返回值是一个字符串数组,其中包含了这个参数名对应的所有参数值
    -- 如果获取的是一个不存在的参数,返回值为null
    

    代码示例:

    //1.获取请求参数中的用户名(user)
    String user = request.getParameter("user");
    System.out.println( "user="+user );
    
    //2.获取请求参数中的爱好(like)
    String[] like = request.getParameterValues( "like" );
    System.out.println( "like="+Arrays.toString( like ) );
    
    • 问题3、获取请求参数时的中文乱码问题?

    在获取中文的请求参数时,可能会出现乱码问题(和请求方式、tomcat服务器版本有关),具体可以分为以下三种情况:

    1. 如果请求是GET提交,并且tomcat是8.0及以后的版本,GET提交的中文参数,在获取时不会出现乱码问题!(8.0以后的tomcat包括8.0在获取GET提交的中文参数时,已经处理中文乱码问题。)

    2. 如果请求是POST提交,不管是哪个版本的tomcat服务器,在获取中文参数时,都会出现乱码问题。因为tomcat底层在接收POST提交的参数时,默认会使用iso8859-1编码接收,而这个编码中没有中文字符,所以在接收中文参数时,一定会出现中文乱码问题!

    解决方法是:通知服务器 m ,在接收POST提交的参数时,使用utf-8编码来接收!

    request.setCharacterEncoding("utf-8");
    

    注意:

    这行代码不会影响GET提交,只对POST提交有效!
    这行代码要放在任何获取参数的代码之前执行!

    1. 如果请求是GET提交,并且tomcat是7.0及以前的版本,GET提交的中文参数,在获取时会出现乱码问题!

    解决方法: 在[tomcat安装目录]/ conf/server.xml文件的(修改端口的)Connector标签上,添加一个 URIEncoding=“utf-8” 属性,如下:

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="utf-8" />
    

    同时在[Eclipse]/Servers/[当前tomcat服务器对应的配置目录]/server.xml文件中,在Connector标签上,添加一个 URIEncoding=“utf-8” 属性,同上!

    (二)实现请求转发

    请求转发是服务器内部资源的一种跳转方式,即当浏览器发送请求访问服务器中的某一个资源(A)时,该资源将请求转交给另外一个资源(B)进行处理并且由资源B做出响应的过程,就叫做请求转发。

    请求转发和重定向都是资源的跳转方式,但是跳转的过程有所不同。

    在这里插入图片描述

    • 请求转发的特点:

      • (1)转发是一次请求,一次响应
      • (2)请求转发前后,浏览器的地址栏地址不会发生变化。(浏览器–访问–> A --转发–> B,地址栏地址始终指向A的地址)
      • (3)请求转发前后的request对象是同一个(转发前在A中的request和转发到B后,B中的request对象和A中的request对象是同一个。基于这一点,可以通过request从A带数据到B)
      • (4)请求转发前后的两个资源必须属于同一个Web应用,否则将无法进行转发。(A–转发–>B,A和B必须属于同一个Web应用!)
    • 请求转发实现:

    request.getRequestDispatcher(url地址/转发到资源的地址).forward(req, res);
    
    • 代码示例:
    //从当前Servlet转发到index.jsp(http://localhost/day10/index.jsp)
    //request.getRequestDispatcher("/index.jsp").forward(request, response);
    request.getRequestDispatcher("index.jsp").forward(request, response);
    

    在这里插入图片描述

    (三)作为域对象使用

    request在实现转发时,通过request.setAttribute方法和request.getAttribute方法带数据到目的地时,就是通过request对象中的map集合带数据,这个requ est对象上的map集合以及request对象所在的范围即称之为是一个域对象。

    如果一个对象具备可以被访问的范围,通过这个对象上的map集合可以在整个范围内实现数据的共享。这样的对象就叫做域对象。

    在request对象上提供了往域对象(map)中存数据的方法以及取数据的方法:

    request.setAttribute(String attrName, Object attrValue);
    -- 往request域中存入一个域属性,属性名(key)只能是字符串,属性值(value)可以是任意类型。
    request.getAttribute(String attrName);
    -- 根据属性名(key)获取对应的属性值(value)。返回的是一个Object类型的对象。
    

    request域对象所具备的三大特征:

    • 生命周期: 在服务器调用Servlet程序的service方法之前,会创建代表请求的request对象,在请求处理完,响应结束时,会销毁request对象。

    • 作用范围: 在一次请求范围内,都可以获取到同一个request对象。

    • 主要功能: 和请求转发配合使用,从Servlet带数据到JSP(带数据到目的地)

    • 扩展内容: request对象的getParametergetAttribute方法有什么区别?

      • getParameter()方法是用于获取(从浏览器发送过来的)请求参数的,请求参数不能设置,只能是浏览器发送给服务器,在服务器端再通过getParameter方法获取请求中的参数
      • getAttribute()方法是用于从request域中获取域属性时用的,域属性得先存入到域中(即得先通过setAttribute方法将数据存入request域中),再通过getAttribute()方法从域中获取。

    (四)案例:模拟查询所有门店功能

    1、创建一个Servlet程序,用于处理查询所有门店信息请求

    public class DoorListServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	protected void doGet(HttpServletRequest request, HttpServletResponse
    response)
    throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            //1.模拟查询数据库, 查询所有门店集合
            List<String> doorList = new ArrayList();
            doorList.add("01, 永和北三环西路店, 010-67676767");
            doorList.add("02, 永和西直门店, 010-68976347");
            doorList.add("03, 永和东直门店, 010-78397647");
            doorList.add("04, 永和北京西店, 010-78764397");
            doorList.add("05, 永和天安门店, 010-78769743");
            //2.将数据存入request域中
            request.setAttribute( "list", doorList );
            //3.将请求转发到 door_list.jsp 中, 取出所有门店显示在页面中
            request.getRequestDispatcher("door_list.jsp")
            .forward(request, response);
        }
    }
    

    2、创建一个JSP,用于显示所有门店信息

    <body>
    <h3>显示所有门店信息</h3>
        <%
            //获取request域中的门店信息集合
            List<String> list =(List<String>)request.getAttribute("list");
            //遍历门店集合, 将门店信息输出在网页上
            for( String door : list ){
            	out.write( door +"<br/>");
            }
        %>
    </body>
    

    三、response对象


    response是代表HTTP响应信息的对象。

    (一)向客户端发送数据

    PrintWriter out = response.getWriter();

    由于服务器在通过response获取的流发送数据时,默认使用iso8859-1编码,而这个编码中没有中文字符,所以在通过response获取的流发送中文数据时,会出现乱码问题。

    解决方法是:在响应数据之前,通知服务器使用utf-8发送数据。

    /*  通知服务器在响应数据时,使用utf-8编码
     * 也能通知浏览器使用utf-8接收服务器发送的数据 */
    response.setContentType( "text/html;charset=utf-8" );
    PrintWriter out = response.getWriter();
    out.write( "你好" );
    

    (二)实现重定向

    当浏览器向服务器发请求访问某一个资源A,资源A在响应时通知浏览器需要再进一步请求才能获取到对应的资源,浏览器再次发请求访问服务器中的资源B,最终由资源B响应浏览器要获取的资源,这个过程叫做重定向。

    在这里插入图片描述

    • 重定向的特点:

      • (1)重定向是两次请求、两次响应
      • (2)重定向前后,浏览器的地址栏地址会发生变化。(因为两次请求都是通过浏览器发起,浏览器知道这个跳转的过程,因此地址栏地址会变化)
      • (3)重定向前后的request对象不是同一个(因为重定向是两次请求,服务器会根据两次请求创建两个不同的request对象,request对象不是同一个,也就不能在重定向时通过request带数据到目的地。)
      • (4)重定向前后的两个资源可以是来自不同的web应用,甚至可以是来自不同的服务器。(进行跳转的两个资源之间没有限制)
    • 实现代码:

    response.sendRedirect(所重定向到资源的URL地址);
    
    • 代码示例:
    //测试1: 从当前Servlet(day10/TestRedirect)重定向到day10/index.jsp
    // http://localhost/day10/TestRedirect
    // http://localhost/day10/index.jsp
    response.sendRedirect( "http://localhost/day10/index.jsp" );
    response.sendRedirect( "/day10/index.jsp" );
    response.sendRedirect( "/index.jsp" ); //错误路径
    response.sendRedirect( "index.jsp" ); //正确路径
    
    //测试2: 从当前Servlet重定向到day09/index.jsp
    response.sendRedirect( "http://localhost/day09/index.jsp" );
    
    //测试3: 从当前Servlet重定向到百度首页
    response.sendRedirect( "http://www.baidu.com" );
    

    总结:什么时候用转发(forward)?什么时候用重定向(redirect)?

    (1)如果希望跳转前后地址栏地址不会发生变化, 只能使用转发; 如果希望跳转前后地址栏地址会发生变化, 只能使用重定向
    (2)如果希望在跳转前后, 能够通过request对象带数据到目的地, 只能使用转发
    (3)如果仅仅是做一个跳转,没有其他要求,此时推荐使用转发(转发是一次请求,一次响应,可以减少访问服务器的次数,降低服务器的压力)


    在这里插入图片描述

    展开全文
  • ResponseEntity总结

    千次阅读 2021-01-21 15:02:25
    ResponseEntity总结 @Author:Guzi499 @QQ:504305797 @Date:2020/01/11 1.理解 csdn某位大佬在一篇文章的评论中总结的很好,这里直接拿过来 ResponseEntity的优先级高于@ResponseBody。在不是ResponseEntity的...

    ResponseEntity总结

    @Author:Guzi499

    @QQ:504305797

    @Date:2020/01/11

    1.理解

    csdn某位大佬在一篇文章的评论中总结的很好,这里直接拿过来

    1. ResponseEntity的优先级高于@ResponseBody。在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。
    2. ResponseEntity 是在 org.springframework.http.HttpEntity 的基础上添加了http status code(http状态码),用于RestTemplate以及@Controller的HandlerMethod。它在Controller中或者用于服务端响应时,作用是和@ResponseStatus与@ResponseBody结合起来的功能一样的。用于RestTemplate时,它是接收服务端返回的http status code 和 result的。
    3. 总结:简单粗暴的讲 @ResponseBody可以直接返回Json结果, @ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus

    其实我之前在某论坛上也看到有人这样介绍ResponseEntity<T>(忘记原话了):

    • 一般我们返回结果都是自定义vo类返回给前台,但是你要是没有其他需要的话,直接用ResponseEntity<T>来返回你想返回的对象。

    2.基本使用

    @RequestMapping(value="/demo1"`)
    public ResponseEntity demo1(){
    
    	//使用方式一
    	//    ResponseEntity responseEntity = new ResponseEntity(new User("lvbb",24),HttpStatus.OK);
    	
    	//使用方式二   
    	returnResponseEntity.ok(new User("lvbb",24)); 
    }
    

    ResponseEntity类继承自HttpEntity,有三个关键属性 httpStatus 、body、httpHeader,分别代表响应状态码、响应体、响应头信息;

    2.1 返回状态码200

    下面,我来演示一下目前我碰到的一些使用情况:

    2.1.1 返回200且无返回值
    @GetMapping("/hello")
    public ResponseEntity<User> getBean(){
        
        //...业务处理中
        
        //只用关注这一句
        return ResponseEntity.ok(null);
    }
    
    2.1.2 返回200且有返回值
    @GetMapping("/hello")
    public ResponseEntity<User> getBean(){
        
        //...业务处理中
        
        User user = new User();
        user.setUserName("guzi");
        user.setAge(24);
        
        //只用关注这一句
        return ResponseEntity.ok(user);
    }
    

    2.2 返回状态码非200

    先介绍一下ResponseEntity<T>中的方法,如果你能看得懂的话,就大概看一下,然后自己翻翻源码,如果能力有限,请看我案例,标注出来的为我目前使用过的方法。

    2.2.1 返回状态码非200且无返回值
    @GetMapping("/hello")
    public ResponseEntity<User> getBean(){
        
        //...业务处理中
        
        //只用关注这一句
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }
    
    • Httpstatus.INTERNAL_SERVER_ERROR代表已定义的相应状态码,如上则为INTERNAL_SERVER_ERROR(内部服务器错误)即状态码为500,再看看源码,发现是个枚举,也就是我们想返回什么状态码就直接选择对应的枚举项就OK了。这里我抛砖引玉,大家针对自己的情况选择对应的要返回的状态码。至于后面的build方法,要么参考源码(上图指针指向的接口被实现),要么百度,要么看我演示的两种情况。无返回对象用build方法,有返回用2.2.2中的body方法。

    2.2.2 返回状态码非200且有返回值
    @GetMapping("/hello")
    public ResponseEntity<User> getBean(){
        
        //...业务处理中
        
        User user = new User();
        user.setUserName("guzi");
        user.setAge(24);
        
        //只用关注这一句
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(user);
    }
    

    2.3 返回状态码非200包含HttpHeaders和HttpStatus

    这里目前没使用过,等用到了再补充,如果你准备保存这篇文章,也请你碰到时自行补充!

    3.总结

    个人观点:

    除非有特殊需要,不然我是不会使用这玩意的…,一般请求成功我就返回 json,请求失败就返回 null 。当然了,特殊情况特殊对待。比如接口文档一定要你的返回状态头,自定义返回状态码,你还是得规矩听从的。

    知乎上大佬观点:

    如果仅仅需要返回json格式的数据,那么添加 @ResponseBody 注解就行了,其他的时候视情况再考虑使用。

    展开全文
  • RestTemplate和ResponseEntity

    千次阅读 2019-04-30 21:37:56
    ResponseEntity 简介:继承自HttPEntity类,封装了请求后返回的响应头、响应体和响应状态。 作用:用于controller层向前端返回数据和状态码。 构造器: new ResponseEntity(HttpStatus.OK): http状态码。 new ...
  • 文章目录response的属性:1. response.status_code2. response.text3. response.content4. response.encoding5. response.apparent_encoding6. response.headersresponse的属性:import requestsresponse=requests.get...
  • 2个案例带你快速实现Response返回值

    千次阅读 2021-02-03 09:49:28
    所有返回前台的内容其实都应该是Response的对象或者其子类,我们看到如果返回的是字符串直接可以写成return u'字符串内容'的形式,但是其实这个字符串也是经过了Response包装的:returnResponse(u'字符串')我们看一...
  • Unable to parse response body for Response{requestLine=POST /article/_doc?timeout=1m HTTP/1.1, host=http://106.52.65.18:9200, response=HTTP/1.1 201 Created}; nested exception is java.lang....
  • Django系列(3)-统一封装Response消息体

    千次阅读 2019-07-25 10:47:02
    from rest_framework.response import Response from django.utils import six from base.constant import CODE_SUCCESS, MSG_SUCCESS from rest_framework import status class BaseResponse(Response): def __...
  • Response响应的中文乱码问题

    万次阅读 2020-07-10 23:19:10
    乱码呈现 ...因为Response对象时tomcat创建的,tomcat默认使用的是ISO-8859-1字符集,而IE浏览器默认使用的是GB2312字符集,也就是GBK字符集解码,2者的字符集不一样,所以会出现乱码 乱码解...
  • http接口调用常用Response返回类

    千次阅读 2022-03-19 17:40:29
    http接口调用常用Response返回类
  • ResponseEntity可以作为controller的返回值,比如对于一个处理下载二进制文件的接口,可以这么定义: @RequestMapping("/download") public ResponseEntity<byte[]> download(@RequestParam String ...
  • response设置编码的三种方式以及比较

    千次阅读 2019-05-24 14:50:12
    response设置编码的三种方式以及比较 2017年01月03日 14:12:46Listen_Silently阅读数:18021 在很多场合会发现我们输出的中文是乱码,这主要可能有两方面的原因: 一个是浏览器的解析方式,另一个是我们服务器端...
  • Response的Header属性详解

    千次阅读 2019-08-09 15:44:46
    Response的Header属性详解 一、Header属性 二、Header属性分类 1、通用信息头 2、请求头 3、响应头 4、实体头 5、扩展头 三、Response设置Header属性 1、控制浏览器禁止缓存当前文档内容 2、控制浏览器...
  • 1、HttpServletResponse 和 ResponseEntity的使用主要看个人了,如果使用Spring的项目就可以选择使用ResponseEntity,没有用Spring就可以直接使用HttpServletResponse。 2、不管用那个来下载文件,如果这个文件名...
  • java response输出文件流

    千次阅读 2021-02-26 15:15:03
    1、设置ContentTyperesponse.setContentType("application/x-download");2、设置文件名,并指定编码格式fileName = URLEncoder....response.setCharacterEncoding("UTF-8");3、将文件名addHeaderresponse.addHe...
  • java返回数据的ResponseEntity

    千次阅读 2021-02-26 20:02:09
    1.ResponseEntity实体类(对HashMap的封装)package com.kexin.common.util;...public class ResponseEntity extends HashMap {public static ResponseEntity success(String message){ResponseEntity ...
  • Python网络爬虫之response方法

    千次阅读 2022-03-08 18:08:35
    请求发送数据 response = requests.post(url=url, data=data, headers=headers) # 5.响应数据 dic_obj = response.json() # 6.持久化存储 fileName = word + '.json' fp = open(fileName, 'w', encoding='utf-8') ...
  • fastapi教程-进阶五(Response Model)

    千次阅读 2020-09-02 14:47:40
    Response Model 还是以一个例子开头: from typing import Optional from fastapi import FastAPI from pydantic import BaseModel, EmailStr app = FastAPI() class UserIn(BaseModel): username: str ...
  • response对象&重定向 详解

    千次阅读 2018-10-26 17:29:46
    2018年10月26日16:10:47 于易动 客户端浏览器和服务器:  ... 响应的时候: response对象: HttpServletResponse     service(HttpServletRequest request, HttpServletResponse response ) 这两个参数对象,...
  • Flask视图函数返回的不仅仅是字符串,而是会对返回值进行一些列的封装,变成一个response响应对象 app.route("/hello") def hello(): # status 200,404,301 # content-type http headers # content-type = text...
  • Response返回JSON数据到前台页面

    千次阅读 2021-02-26 12:44:42
    简述:在servlet填充Response的时候,做JSON格式的数据转换使用的类是net.sf.json.JSONObject,传入response对象和返回的显示类,修改response,返回前台JSON格式数据代码:/***以JSON格式输出*@paramresponse*/...
  • Response响应详解

    千次阅读 2020-07-10 22:14:24
    数据格式 响应行 响应头 响应空行 响应体 数据格式 响应行 响应头 响应空行 响应体 我们新建一个d.html页面 火狐浏览器访问 ... Content-disposition:服务器告诉客...
  • ServerResponse

    千次阅读 2018-07-27 16:27:28
    ServerResponse(ResponseCode.SELLER_NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc()); } public static <T> ServerResponse<T> createByErrorCodeMessage ( int errorCode,String errorMessage...
  • 使用ResponseEntity处理API返回

    万次阅读 2019-10-29 23:38:20
    最近在做Google AMP mail的时候遇到了一个问题,在调用/unsub(退订)接口的时候需要向google client返回特定的ResponseHeader。但是项目使用的是Springboot 2.x,通常使用@RestController修饰API层,无法做到动态的...
  • //修改response的值 if(StrUtil.containsIgnoreCase(s, "code") && JSONUtil.isJson(s)){ GlobalResponse globalResponse = getGlobalResponse(originalResponse, s); if(globalResponse != null){ log.info("修改...
  • 请求响应流程图 1. response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。...response对象是用来对客户端进行响应的,这说明在service()方法中使用r...
  • response响应

    千次阅读 2018-03-10 11:39:15
    在service()中可以使用request来获取请求数据,还可以使用response向客户端响应,response有响应流。request和response是一次性的,即每次请求都要创建新的。 response是类型是javax.servlet....
  • HTTP Response Splitting原理和解决方案

    千次阅读 2019-11-27 15:31:38
    服务器将R1作为response返回给A,而第R2则被服务器作为B的response而返回给了B﹙即使R2并不是服务器自己生成的)。 ​ Request A------------->Web Server(R1,R2) ​ Request B------------->Web ...
  • 在tomcat的localhost.log日志中时长见到 getOutputStream() has already been called for this response 异常的身影,一直不知由于哪里原因导致异常的产生,此异常并不会影响前端客户正常使用。 二、认识异常 异常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,768,471
精华内容 707,388
关键字:

response