手写tomcat(一):能够访问WEB-ROOT目录下的文件

本文介绍了一个自定义Tomcat实现的过程,详细阐述了用户通过HTTP请求访问服务器时,数据如何在客户端与服务器之间交互。通过分析请求URL,Tomcat查找并执行相应的Servlet,调用doGet()或doPost()方法。目前项目基于BIO实现,不支持WAR包和Servlet,后续将继续优化。
摘要由CSDN通过智能技术生成

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&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值