zoukankan      html  css  js  c++  java
  • java之 Response

    0x01、Response

    ​ 在Servlet API中,定义了一个HttpServletResponse接口(doGet,doPost方法的参数),它继承自ServletResponse接口,专门用来封装HTTP响应消息。由于HTTP响应消息分为响应行、响应头、响应体三部分,因此,在HttpServletResponse接口中定义了向客户端发送响应状态码、响应头、响应体的方法

    0x02、操作响应行

    HTTP/1.1 200
    

    ​ 常用的状态码:

    ​ 200:成功

    ​ 302:重定向

    ​ 304:访问缓存

    ​ 404:客户端错误

    ​ 500:服务器错误

    1. 一般不需要设置, 可能302 重定向需要设置

    0x03、操作响应头

    响应头: 是服务器指示浏览器去做什么

    • 一个key对应一个value

    • 一个key对应多个value

    重点关注方法:

    setHeader(String name,String value);
    

    常用的响应头

    Refresh:定时跳转 (eg:服务器告诉浏览器5s之后跳转到百度)

    Location:重定向地址(eg: 服务器告诉浏览器跳转到xxx)

    Content-Disposition: 告诉浏览器下载

    Content-Type:设置响应内容的MIME类型(服务器告诉浏览器内容的类型)

    1、定时刷新

    response.setHeader("refresh","秒数;url=跳转的路径"); //几秒之后跳转到指定的路径上
    

    2、重定向

    1. 重定向两次请求
    2. 重定向的地址栏路径改变
    3. 重定向的路径写绝对路径(带域名/ip地址的, 如果是同一个项目里面的,域名/ip地址可以省略)
    4. 重定向的路径可以是项目内部的,也可以是项目以外的(eg:百度)
    5. 重定向不能重定向到WEB-INF下的资源
    6. 把数据存到request里面, 重定向不可用

    实例代码:

    //方式一: 重定向
    //1.设置状态码
    //response.setStatus(302);
    //2.设置重定向的路径(绝对路径,带域名/ip地址的,如果是同一个项目里面的,域名/ip地址可以省略)
    //response.setHeader("Location","http://localhost:8080/day28/demo08");
    //response.setHeader("Location","/day28/demo08");
    //response.setHeader("Location","http://www.baidu.com");
    
    //方式二:  直接调用sendRedirect方法, 内部封装了上面两行
    response.sendRedirect("http://localhost:8080/day28/demo08");
    

    重定向的特点:

    1. 重定向的跳转是由浏览器发起的,在这个过程中浏览器会发起两次请求
    2. 重定向跳转可以跳转到任意服务器的资源,但是无法跳转到WEB-INF中的资源
    3. 重定向跳转不能和request域对象一起使用
    4. 重定向跳转浏览器的地址栏中的地址会变成跳转到的路径
    

    请求转发的特点:

    1. 请求转发的跳转是由服务器发起的,在这个过程中浏览器只会发起一次请求
    2. 请求转发只能跳转到本项目的资源,但是可以跳转到WEB-INF中的资源
    3. 请求转发可以和request域对象一起使用
    

    0x04、操作响应体

    • 解决字符流输出中文乱码问题
    response.setContentType("text/html;charset=utf-8");
    
    • 使用字符输出流
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
    
            //要向浏览器输出响应体的信息,需要通过流来进行操作
            //第一种:字符串,输出文本内容
            PrintWriter writer = response.getWriter();
            //使用字符流往浏览器输出文本
            //1. writer()方法,只能输出字符串,如果输出int、float等等类型的话,则会有问题
            writer.write("你好世界");
    
            //2. print()方法,可以输出数字、字符串
            //writer.print(8);
        }
    
  • 相关阅读:
    【数学】杜教筛
    【数学】【多项式】多项式求逆
    【数学】求导
    【数学】【多项式】快速数论变换(NTT)
    【数学】【多项式】快速傅里叶变换(FFT)
    WC2021 Day3 笔记
    网络流
    $DP$ 重修
    数学基础 5
    数学基础 3
  • 原文地址:https://www.cnblogs.com/0x7e/p/14331423.html
Copyright © 2011-2022 走看看