• web之Respone


    服务器处理请求的流程:
      服务器每次收到请求时,都会为这个请求开辟一个新的线程。
      服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!(袋子)
      服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。(手机)

    ------------------

    response:其类型为HttpServletResponse
        ServletResponse-->与协议无关的类型
        HttpServletResponse-->与http协议相关的类型

     回忆一下http协议!http协议中响应的内容包含哪些东西呢?
     * 状态码:200表示成功、302表示重定向、404表示客户端错(访问的资源不存在)、500表示服务器端错
       > sendError(int sc) --> 发送错误状态码,例如404、500
       > sendError(int sc, String msg) --> 也是发送错误状态码,还可以带一个错误信息!
       > setStatus(int sc) --> 发送成功的状态码,可以用来发送302
        案例:

     public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                   response.sendError(404,".............");
                 }

        发送404
      * 响应头:Content-Type、Refresh、Location等等
        头就是一个键值对!可能会存在一个头(一个名称,一个值),也可能会存在一个头(一个名称,多个值!)
        > *****setHeader(String name, String value):适用于单值的响应头,例如:response.setHeader("aaa", "AAA");
        > addHeader(String name, String value):适用于多值的响应头

          response.addHeader("aaa", "A");
          response.addHeader("aaa", "AA");
          response.addHeader("aaa", "AAA");

       > setIntHeader(String name, int value)适用于单值的int类型的响应头
             response.setIntHeader("Content-Length", 888);//设置长度
        >addIntHeader(String name, int value):适用于多值的int类型的响应头
        > setDateHeader(String name, long value)适用于单值的毫秒类型的响应头
              response.setDateHeader("expires", 1000 * 60 * 60 * 24);//过期时间24小时
       > addDateHeader(String name, long value):适用于多值的毫秒类型的响应头
        案例:


        > 发送302,设置Location头,完成重定向!

       

    代码:

       

    -*****************************************************************************

       快捷的方法重定向:

      response.sendRedirect("http://www.baidu.com");
      > 定时刷新:设置Refresh头,你可以把它理解成,定时重定向!

             代码:

          

     

    其中:response.setHeader("Refresh", "5;URL=/day10_1/Eservlet");  意思是5秒后跳转到URL=/day10_1/Eservlet"

       > 禁用浏览器缓存:Cache-Control、pragma、expires:过期

                 代码;

             
        > <meta>标签可以代替响应头:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          
      * 响应体:通常是html、也可以是图片!
        >     response的两个流:
          <> ServletOutputStream,用来向客户端发送字节数据。        ServletOutputStream out = resopnse.getOutputStream();
          <> PrintWriter,用来向客户端发送字符数据!需要设置编码。   PrintWriter writer = response.getWriter();
          <> 两个流不能同时使用!否则让出现异常

                  
        案例:
        > 使用PrintWriter发送字符数据

             

              
        > 使用ServletOutputStream发送字节数据(图片)

             
      * 重定向:设置302,设置Location!其中变化的只有Location,所以java提供了一个快捷方法,完成重定向!
       > sendRedirect(String location)方法

  • 相关阅读:
    English Learning 2020
    TURKEY Example–KMAT stock order ZTIR/ KMAT dealer 3rd party order ZTR
    TURKEY Example–KMAT stock order ZOR
    ANZ Project
    Outlook Integration with Salesforce – A Step by Step Guide
    3rd party order swap and sales from stock
    Ford’s New 8-Speed Transmission Is GM’s 9-Speed, Minus A Gear
    The New Ford 8F35 8-speed Transmission
    Smartforms 打印文字压线问题
    abap table control里面各种属性和事件的写法
  • 原文地址:https://www.cnblogs.com/lxp503238/p/6531909.html
Copyright © 2020-2023  润新知