【实战】JAVA实现Tomcat--理解Tomcat运行原理

1.目的

  • 通过手动实现Tomcat,我们可以发现运行在服务端的JAVA小程序AAServlet或BBServlet本质上还是一段JAVA小程序,只不过我们只需要按照约定实现Servlet这个接口,只需要做好对应的配置信息,之后我们就可以通过浏览器向服务端发送请求,让服务端这个JAVA小程序(AAServlet或BBServlet)进行执行。

2.实现Tomcat

  • 工具:IntelliJ IDEA 2019.3.3,JDK8

2.1创建JAVA项目

  • 点击【文件】—>新建【项目】—>选择【Java模块】—>一直【下一步】—>创建项目
    在这里插入图片描述
  • 项目目录结构
    在这里插入图片描述

2.1.1创建Servlet接口

  • Servlet.java
package com.learn.tomcat;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public interface Servlet {
   
    //初始化
    void init();
    //服务
    void Service(InputStream is, OutputStream ops) throws IOException;
    //销毁
    void destory();
}

2.1.2创建AAServlet和BBServlet

  • AAServlet.java,BBServlet类似,代码修改一下即可
package com.learn.tomcat;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class AAServlet implements Servlet {
   
    @Override
    public void init() {
   
        System.out.println("aaServlet...init");
    }
    @Override
    public void Service(InputStream is, OutputStream ops) throws IOException {
   
        System.out.println("aaServlet...service");
        ops.write("I am from AAServlet".getBytes());
        ops.flush();
    }
    @Override
    public void destory() {
   }
}

2.1.3创建conf.properties配置文件

  • conf.properties
aa=com.learn.tomcat.AAServlet
bb=com.learn.tomcat.BBServlet

2.2编写TestServlet理解Tomcat

2.2.1步骤

  1. 建立ServlerSocket对象,监听本机的8080端口,等待来自客户端的请求
  2. 获取Socket对象
  3. 通过Socket对象获取输入流对象
  4. 通过Socket对象获取输出流对象
  5. 通过输入流读取来自客户端的数据,分析本次请求需要获取的资源路径
  6. 读取WebContent下的请求资源文件到服务器内存
  7. 通过输出流将HTTP协议的响应行和响应投部分发送到客户端
  8. 将内存中的请求资源内容作为响应体发送到客户端
  9. 释放资源

2.2.2创建TestServlet类

  • TestServlet.java,建议从main方法开始读代码,根据序号理解
package com.learn.tomcat;
//注意用java.io.*导入不符合阿里编程规范,建议修改
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.*;
public class TestServler {
   
    //定义一个静态map,存储服务器conf.properties中的配置信息
    public static Map<String,String> map = new 
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值