美文网首页
2019-08-25

2019-08-25

作者: 勿陌 | 来源:发表于2019-08-25 21:02 被阅读0次

响应处理


import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Date;

public class Response {
    private BufferedWriter bw;
    // 正文
    private StringBuilder content;
    // 协议头(状态行与响应头)信息
    private StringBuilder headInfo;
    // 正文的字节数
    private int len;

    private final String BLANK = " ";
    private final String CRLF = "\r\n";

    private Response() {
        content = new StringBuilder();
        headInfo = new StringBuilder();
        len = 0;
    }

    public Response(OutputStream os) {
        this();
        bw = new BufferedWriter(new OutputStreamWriter(os));
    }

    public Response(Socket client) {
        this();
        try {
            bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
        } catch (IOException e) {
            headInfo = null;
            e.printStackTrace();
        }
    }

    // 动态添加内容
    public Response print(String info) {
        content.append(info);
        len += info.getBytes().length;
        return this;
    }

    public Response println(String info) {
        print(info).print(CRLF);
        return this;
    }

    /**
     * 处理中文
     * 
     * @return
     */
    // 推送响应信息
    public void pushToBrowser(int code) throws IOException {
        if (null == headInfo) {
            code = 505;
        }
        creatInfo(code);
        System.out.println(headInfo);
        bw.append(headInfo);
        bw.append(content);
        bw.flush();
    }

    // 构建头信息
    public void creatInfo(int code) {
        // 1.响应行:HTTP/1.1 200 OK
        headInfo.append("HTTP/1.1").append(BLANK).append(code).append(BLANK);
        switch (code) {
            case 200:
                headInfo.append("OK").append(CRLF);
                break;

            case 404:
                headInfo.append("Not Found").append(CRLF);
                break;
            case 505:
                headInfo.append("Server Erro").append(CRLF);
                break;
        }
        // 2.响应头的最后一行存在空
        headInfo.append("Date:").append(new Date()).append(CRLF);
        headInfo.append("Server:Tan Server/39.105.124.213").append(CRLF);
        headInfo.append("Content-type:text/html;charset=UTF-8").append(CRLF);
        headInfo.append("Content-length:").append(len).append(CRLF);
        headInfo.append(CRLF);
    }
}

相关文章

  • Lan的ScalersTalk第四轮新概念朗读持续力训练Day

    练习材料: [Day 1794 2019-08-25] Lesson 36-2 The cost of gover...

  • 8月25日

    2019-08-25 毛雅亭 字数 572 · 阅读 17 2019-06-02 18:39 ...

  • DALS025-批次效应01-什么是批次效应

    title: DALS025-批次效应01-什么是批次效应date: 2019-08-25 12:0:00type...

  • 文先森的日常 -- 失误

    日精进打卡第389天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-08-25 【知~学习】 《...

  • 秋雨

    文/鲁以薇 处暑后三日, 秋雨如约来。 凉风爽人意, 秋词何赋愁? 2019-08-25

  • 学习思考:现今社会赚钱思路

    作者链接:学习思考:现今社会赚钱思路 作者:简自强 2019-08-25 23:42 看过很多短文视频,也听了很多...

  • 2019-08-26

    2019-08-25 亮剑_f5b9 字数 409 · 阅读 22 2019-08-25.22:10 亮剑_f5b...

  • 陪我吵架😋

    2019-08-25 心情不好, 易燃易爆。 我想吵架, 陪我吵架, 顺着我, 哄着我, 宠着我。 深更半夜, 困...

  • 山花

    ——谨以此诗悼念吴治录老师 点点缀遐苍,经冬复历霜。 无心占春色,着意肆芬芳。 2019-08-25

  • 2019-08-25间歇跑4

    时间:2019-08-25 06:30 线路:天马河绿道 成绩:间歇跑800米*6用时近60分 感受:早上起来,也...

网友评论

      本文标题:2019-08-25

      本文链接:https://www.haomeiwen.com/subject/ajbkectx.html