Java 手写HTTP服务器

店铺:https://shop58616120.taobao.com

一、创建服务器 并启动

代码清单1

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class HTTPServer {
    private ServerSocket server;
    public static void main(String[] args) throws IOException {
        new HTTPServer().start();
    }

    // 启动服务器
    public void start() {
        try {
            server = new ServerSocket(8888);
            this.receive();
                } catch (IOException e) {
                        e.printStackTrace();
                }
    }

    // 接收客户端连接
    private void receive() {
        try {
            Socket client = server.accept();
            StringBuilder sb = new StringBuilder();
            String msg = null;
            BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));

            while((msg = br.readLine()).length() > 0){
                    sb.append(msg);
                    sb.append("\r\n");
                    if(null == msg){
                        break;
                    }
           }
            String requestInfo = sb.toString().trim();
            System.out.println(requestInfo);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 停止服务器
    public void stop() {
        try {
            server.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、表单数据

method: 请求方式 get/post

    get: 默认方式,数据量小,安全性不高

    post:量大,安全性相对高

action: 请求的服务器路径

id:编号,前端区分唯一性,js中使用

name:名称,后端(服务器)区分唯一性,获取值

只要提交数据给后台,必须存在name

三、HTTP请求与响应格式

HTTP请求由3部分构成,分别是:

  • 请求方式、URI(统一资源定位符)、HTTP协议/版本

  • 请求头(RequstHeader)

  • 请求正文(RequestContent) post才有

HTTP响应由3部分组成,分别是:

  • HTTP协议版本、状态代码、描述

  • 响应头(Response Head)

  • 响应正文(Response Content)

注释1:借助Chrome、Firefox等浏览器开发者工具查看请求、响应信息

评论

© Saoirse | Powered by LOFTER