gitHub地址:https://github.com/shenshaoming/tomcat
tomcat获取客户端请求图:
从图中我们能够了解到,当用户从客户端访问我们的服务器时,通过http请求向我们的服务器发送基于TCP/IP协议的报文,而我们的服务器在接受到8080端口的请求时,会将数据转发给tomcat,tomcat通过对请求报文的分析,分析出访问的URL,然后,它会去自己的Servlet目录里找对应的Servlet,Servlet目录是一种<key,value>形式的键值对,找到对应的Servlet后,通过判断是GET还是POST请求,对应的去调用Servlet中的doGet()或doPost()方法.
在doGet()和doPost()方法中,将需要返回给前台的数据,以输出流(outputStream)的形式返回给前台(也是基于HTTP协议的),前台接收到后台返回的数据后,会进行页面渲染.
先上代码:
Request.java
package com.tomcat.core;
import java.io.IOException;
import java.io.InputStream;
/**
* @Author: 申劭明
* @Date: 2019/9/16 17:24
*/
public class Request {
private InputStream is;
/**
* 请求路径,如:/test.txt
*/
private String url;
public Request(){
}
public Request(InputStream inputStream){
this.is = inputStream;
}
/**
* @Description : 获取http请求中的相关参数
*
* @author : 申劭明
* @date : 2019/9/17 10:26
*/
public void parse() {
/**
* 一个包没有固定长度,以太网限制在46-1500字节,
* 1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,
* 现在一般可允许应用层设置8k&#