1.启动一个Socket服务端(非Java人员可以跳过)
源码
package com.abl.client;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8090);
System.out.println("服务已启动:8090");
Socket client = null;
BufferedReader reader = null;
PrintWriter writer = null;
while (true) {
try {
client = server.accept();
client.setSoTimeout(300);
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
writer = new PrintWriter(client.getOutputStream());
try {
String temp;
while ((temp = reader.readLine()) != null) {
System.out.println(temp);
}
} catch (Exception e) {
}
StringBuilder responseStr = new StringBuilder();
responseStr.append("HTTP/1.1 200 OK\n");
responseStr.append("content-type:text/html;charset=utf-8\n\n");
responseStr.append("<html>");
responseStr.append("<title>Abl Tomcat</title>");
responseStr.append("<h1> Hello </h1>");
responseStr.append("</html>");
writer.print(responseStr);
writer.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (client != null) {
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
2.浏览器访问情况
浏览器F12内容
服务端输出内容
3.分析请求内容
- 一个HTTP请求分为四块内容
请求行、请求头、换行、请求体
请求行
- 一个HTTP请求分为四块内容
请求行、请求头、换行、请求体 - 如图,首行为请求行
- 请求行分为三部分
请求方式 + 空格 + URI + 空格 + 协议
请求头
- 一个HTTP请求分为四块内容
请求行、请求头、换行、请求体 - 如图,从第二行开始,为请求头部分,请求头的终止标记为
空白的换行 \n(如下图中的空白换行) - 请求头组成为:
KEY名称:Value值
请求体
- 一个HTTP请求分为四块内容
请求行、请求头、换行、请求体 - 请求体可以为空
- 使用 Postman 发送请求,body写入内容
4.分析响应内容
- 一个HTTP请求的响应报文,分为四块内容
响应行、响应头、换行、响应体
响应行
- 一个HTTP请求的响应报文,分为四块内容
响应行、响应头、换行、响应体 - 如图,首行为响应行
- 响应行分为三部分
协议 + 空格 + 状态码 + 空格 + 描述文字
响应头
- 一个HTTP请求的响应报文,分为四块内容
响应行、响应头、换行、响应体 - 如图,首行以下,直到,空白换行结束,期间的内容为请求头
- 如图:必须具有请求头:
content-type ,否则浏览器无法识别返回内容的格式
响应体
- 一个HTTP请求的响应报文,分为四块内容
响应行、响应头、换行、响应体 - 如图,响应头 加上空白换行后,接下来的内容就是 返回报文
《目录:从零手写Tomcat》
《目录:Java设计模式》
《幕》
- 留白 —<老吉>
- ~ 今 ~ ? ~ ?????????? ?????????? ???????
|