手写一个简单的Tomcat

本文介绍了如何手写一个简单的Tomcat服务器。通过理解Tomcat的基本工作原理,即接收用户请求,处理URL,读取并输出资源内容,将整个过程拆分为HttpServer、Request和Response三个核心类来实现。在实际操作中,创建HttpServer监听请求,Request解析URL,Response处理响应信息。最后通过测试验证了简易Tomcat的功能。注意,由于缺少响应头,谷歌浏览器可能无法正确解析,建议使用火狐浏览器进行测试。
摘要由CSDN通过智能技术生成

首先tomcat的原理是什么?

在这里插入图片描述

上面的图可以简化为:

在这里插入图片描述

这张图固然缺少了很多东西,但是却是tomcat实现功能的一个基本逻辑

简单的来说,就是用户发出一个请求,后台处理url,通过组合根地址,找到本地的资源地址,然后通过读取这个资源,将它的流输出到页面,这就是tomcat的简单原理

那如何实现呢?

简单的来说:Tomcat由三个基本类组成

  • HttpServer
  • Request
  • Response

Request负责处理url

Response负责处理响应的信息

HttpServer负责阻塞IO,监听消息

既然职责已经分好了,那我们就用代码来实现这个简单的Tomcat吧

首先是HttpServer类:

public class HttpServer{
   	
	//检验是否运行
	public boolean shutdown = false;
	//阻塞接口的方法
	public void acceptWait(){
   
		
			SocketServer sever = null;
			
			//配置server
			try{
   
				//配置服务器的端口,线程连接数,以及地址
				server = new SocketServer(8080,1,"127.0.0.1");
			}catch(Exception ex){
   
				ex.printStack();
			}
			
			while(!shutdown){
   
			
				try{
   
				//创建socket对象
				Socket socket = SocketServer.accept();
				//获取流对象
				InputStream input = socket.getInputStream();
				OutputStream output = socket.getOutStream();
				//根据输入流构建请求对象
				Request request = new Request(input);
				//解析对应的url
				request.parse();

				//根据对应的输入流构建响应对象
				Response response = new Response(output);
			   //设置其本身的请求对象
			   response.setRequest(request);
				//响应静态资源
				response.sendStaticResource();

				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值