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接口
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配置文件
aa=com.learn.tomcat.AAServlet
bb=com.learn.tomcat.BBServlet
2.2编写TestServlet理解Tomcat
2.2.1步骤
- 建立ServlerSocket对象,监听本机的8080端口,等待来自客户端的请求
- 获取Socket对象
- 通过Socket对象获取输入流对象
- 通过Socket对象获取输出流对象
- 通过输入流读取来自客户端的数据,分析本次请求需要获取的资源路径
- 读取WebContent下的请求资源文件到服务器内存
- 通过输出流将HTTP协议的响应行和响应投部分发送到客户端
- 将内存中的请求资源内容作为响应体发送到客户端
- 释放资源
2.2.2创建TestServlet类
- TestServlet.java,建议从main方法开始读代码,根据序号理解
package com.learn.tomcat;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.*;
public class TestServler {
public static Map<String,String> map = new