day05 Request Response

Posted Spurs

tags:

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

Author:相忠良
Email: [email protected]
起始于:April 18, 2018
最后更新日期:April 18, 2018

声明:本笔记依据传智播客方立勋老师 Java Web 的授课视频内容记录而成,中间加入了自己的理解。本笔记目的是强化自己学习所用。若有疏漏或不当之处,请在评论区指出。谢谢。
涉及的图片,文档写完后,一次性更新。

day05 Request Response

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的 request 对象,和代表响应的 response 对象:

  • 要想获取客户机提交过来的数据,只需找 request 对象;
  • 要向客户机输出数据,只需找 response 对象就行了。

1. HttpServletResponse 简介

HttpServletResponse响应,它封装了向客户机 发送数据、发送响应头和发送响应状态码 的方法。例如:

setStatus(int)
setHeader(String, String)
getWriter()
getOutputStream()

1.1 Response 的 OutputStream 输出中文的问题

程序已什么码表输出了,程序就一定要控制浏览器以什么码表打开。

1.用 响应头 的方式控制浏览器的码表,如下:

// servlet 中用 OutputStream 输出中文的问题
public class ResponseDemo1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // 通过response对象为浏览器指定码表
        // 程序已什么码表输出了,程序就一定要控制浏览器以什么码表打开
        response.setHeader("Content-type", "text/html;charset=UTF-8");

        String data = "中国";
        OutputStream out = response.getOutputStream();
        out.write(data.getBytes("UTF-8")); // 以该码表输出
    }
}

2.用 html 的<meta>方式控制浏览器的码表,此方法 没有 向浏览器发送响应头。如下(我试验失败):

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String data = "中国";
        OutputStream out = response.getOutputStream();

        out.write("<meta http-equiv=‘content-type‘ content=‘text/html;charset=UTF-8‘>"
                .getBytes());
        out.write(data.getBytes("UTF-8"));
}

to be continued

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

Day7:request()

Day16

Response ServletContext 中文乱码 Request 编码 请求行 共享数据 转发重定向

cgb2110-day17

[Java][Web]Web 工程中的各类地址的写法

day08