zoukankan      html  css  js  c++  java
  • 03009_HttpServletResponse

    1、HttpServletResponse概述

      (1)我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response;

      (2)service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。

    2、response的运行流程

      

    3、通过抓包工具抓取Http响应

      

        因为response代表响应,所以我们可以通过该对象分别设置Http响应的响应行,响应头和响应体。

    4、通过response设置响应行

      设置响应行的状态码:setStatus(int sc) 。

    5、通过response设置响应头

    addHeader(String name, String value) 
    addIntHeader(String name, int value) 
    addDateHeader(String name, long date) 
    setHeader(String name, String value) 
    setDateHeader(String name, long date) 
    setIntHeader(String name, int value)
    
    其中,add表示添加,而set表示设置

      (1)重定向:状态码302

      

      (2)封装成重定向的方法sendRedirect(url);

      (3)使用js完成页面定时跳转  

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="UTF-8">
     5 <title>Insert title here</title>
     6 <script type="text/javascript">
     7     window.onload = function() {
     8         var time = 5;
     9         var secondEle = document.getElementById("second");
    10         var timer = setInterval(function() {
    11             secondEle.innerHTML = time;
    12             time--;
    13             if (time == 0) {
    14                 clearInterval(timer);
    15                 location.href = "https://www.cnblogs.com/";
    16             }
    17         }, 1000);
    18     }
    19 </script>
    20 </head>
    21 <body>
    22     恭喜您,注册成功!
    23     <span style="color: red" id="second">5</span>秒钟后跳转,如不跳转请点击
    24     <a href="https://www.cnblogs.com/">这里</a>
    25 </body>
    26 </html>

    6、通过response设置响应体

      (1)响应体设置文本

        ①PrintWriter getWriter()
          获得字符流,通过字符流的write(String s)方法可以将字符串设置到response缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。

        ②关于设置中文的乱码问题
          原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过response的setCharacterEncoding(String charset) 设置response的编码。

        ③但我们发现客户端还是不能正常显示文字
          原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以手动修改浏览器的编码是UTF-8 。

        ④我们还可以在代码中指定浏览器解析页面的编码方式

          通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8:response.setContentType("text/html;charset=UTF-8");

        ⑤上面的代码不仅可以指定浏览器解析页面时的编码,同时也内含setCharacterEncoding的功能,所以在实际开发中只要编写response.setContentType("text/html;charset=UTF-8");就可以解决页面输出中文乱码问题。

      (2)响应头设置字节

        ServletOutputStream  getOutputStream()

        获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,在由Tomcat服务器将字节内容组成Http响应返回给浏览器。

     1 package com.gzdlh.contex;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.ServletOutputStream;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 public class ByteServlet extends HttpServlet {
    14 
    15     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    16         // 使用response获得字节输出
    17         ServletOutputStream out = response.getOutputStream();
    18         // 获得服务器上的文件
    19         String realPath = this.getServletContext().getRealPath("a.jpg");
    20         InputStream in = new FileInputStream(realPath);
    21 
    22         int len = 0;
    23         byte[] buffer = new byte[1024];
    24         while ((len = in.read(buffer)) > 0) {
    25             out.write(buffer, 0, len);
    26         }
    27         in.close();
    28         out.close();
    29 
    30     }
    31 
    32     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    33         doGet(request, response);
    34     }
    35 }
  • 相关阅读:
    Sample XPS Documents Download
    触发器中的inserted表和deleted表
    Using freewheel.labs.autodesk.com to auto generate preview images of DWF files on your web site
    解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
    读写xps
    XPS文件,在Windows XP下的打开查看阅读和打印方法。
    Learning to Reference Inserted and Deleted Tables
    Get value from updated, inserted and deleted
    Reinstall Microsoft Helper Viewer
    如何查找文件的IFilter
  • 原文地址:https://www.cnblogs.com/gzdlh/p/8202715.html
Copyright © 2011-2022 走看看