diff --git a/http-server-demo/pom.xml b/http-server-demo/pom.xml
new file mode 100644
index 0000000..96bb233
--- /dev/null
+++ b/http-server-demo/pom.xml
@@ -0,0 +1,16 @@
+
+
+ 4.0.0
+
+ com.itheima
+ http-server-demo
+ 1.0-SNAPSHOT
+
+
+ 11
+ 11
+
+
+
diff --git a/http-server-demo/src/main/java/com/inmind/Server.java b/http-server-demo/src/main/java/com/inmind/Server.java
new file mode 100644
index 0000000..b8239e0
--- /dev/null
+++ b/http-server-demo/src/main/java/com/inmind/Server.java
@@ -0,0 +1,92 @@
+package com.inmind;
+
+import java.io.*;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.charset.StandardCharsets;
+
+/*
+ * 自定义web服务器
+ */
+public class Server {
+ public static void main(String[] args) throws IOException {
+ ServerSocket ss = new ServerSocket(8080); // 监听指定端口
+ System.out.println("server is running...");
+
+ while (true){
+ Socket sock = ss.accept();
+ System.out.println("connected from " + sock.getRemoteSocketAddress());
+
+ //开启线程处理请求
+ Thread t = new Handler(sock);
+ t.start();
+ }
+ }
+}
+
+class Handler extends Thread {
+ Socket sock;
+
+ public Handler(Socket sock) {
+ this.sock = sock;
+ }
+
+ public void run() {
+ try (InputStream input = this.sock.getInputStream(); OutputStream output = this.sock.getOutputStream()) {
+ handle(input, output);
+ } catch (Exception e) {
+ try {
+ this.sock.close();
+ } catch (IOException ioe) {
+ }
+ System.out.println("client disconnected.");
+ }
+ }
+
+ private void handle(InputStream input, OutputStream output) throws IOException {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));
+
+ // 读取HTTP请求:
+ boolean requestOk = false;
+ String first = reader.readLine();
+ if (first.startsWith("GET / HTTP/1.")) {
+ requestOk = true;
+ }
+
+ for (;;) {
+ String header = reader.readLine();
+ if (header.isEmpty()) { // 读取到空行时, HTTP Header读取完毕
+ break;
+ }
+ System.out.println(header);
+ }
+ System.out.println(requestOk ? "Response OK" : "Response Error");
+
+ if (!requestOk) {// 发送错误响应:
+ writer.write("HTTP/1.0 404 Not Found\r\n");
+ writer.write("Content-Length: 0\r\n");
+ writer.write("\r\n");
+ writer.flush();
+ } else { // 发送成功响应:
+ //读取html文件,转换为字符串
+ InputStream is = Server.class.getClassLoader().getResourceAsStream("html/a.html");
+ BufferedReader br = new BufferedReader(new InputStreamReader(is));
+ StringBuilder data = new StringBuilder();
+ String line = null;
+ while ((line = br.readLine()) != null){
+ data.append(line);
+ }
+ br.close();
+ int length = data.toString().getBytes(StandardCharsets.UTF_8).length;
+
+ writer.write("HTTP/1.1 200 OK\r\n");
+ writer.write("Connection: keep-alive\r\n");
+ writer.write("Content-Type: text/html\r\n");
+ writer.write("Content-Length: " + length + "\r\n");
+ writer.write("\r\n"); // 空行标识Header和Body的分隔
+ writer.write(data.toString());
+ writer.flush();
+ }
+ }
+}
diff --git a/http-server-demo/src/main/resources/html/a.html b/http-server-demo/src/main/resources/html/a.html
new file mode 100644
index 0000000..1e01e3d
--- /dev/null
+++ b/http-server-demo/src/main/resources/html/a.html
@@ -0,0 +1,39 @@
+
+
+
+
+ Title
+
+
+
+
+
+ 序号 |
+ 品牌名称 |
+ 企业名称 |
+
+
+
+ 010 |
+ 三只松鼠 |
+ 三只松鼠 |
+
+
+
+ 009 |
+ 优衣库 |
+ 优衣库 |
+
+
+
+ 008 |
+ 小米 |
+ 小米科技有限公司 |
+
+
+
+
+
+
+
+
\ No newline at end of file