实现一个简单的Tomcat
1. Tomcat作用
我们的web应用会运行在Tomcat中,那么显然请求必定是先到达Tomcat的,Tomcat对于请求实际上会进行如下的处理:
- 提供Socket服务:Tomcat的启动,必然是Socket服务,支持http协议。
- 进行请求的分发:一个Tomcat可以为多个web应用提供服务,那么就需要把url下发到不同的web应用。
- 需要将请求和响应封装成request和response:我们在写后端代码的时候都是直接使用request和response的,这是因为Tomcat已经做好了。
下面我们就自己来实现这三步。
2. 实现代码
项目结构:
src
└─mytomcat
BookServlet.java
CarServlet.java
MyRequest.java
MyResponse.java
MyServlet.java
MyTomcat.java
ServletMapping.java
ServletMappingConfig.java
2.1 封装http请求和响应
package mytomcat;
import java.io.IOException;
import java.io.InputStream;
/**
* 封装http请求
*/
public class MyRequest {
private String url;
private String method;
public MyRequest(InputStream inputStream) throws IOException {
String httpRequest = "";
byte[] httpRequestBytes = new byte[1024];
int length = 0;
if((length = inputStream.read(httpRequestBytes)) > 0) {
httpRequest = new String(httpRequestBytes, 0, length);
}
String httpHead = httpRequest.split("\n")[0];
url = httpHead.split("\\s")[1];
method = httpHead.split("\\s")[0];
System.out.println(this.toString());
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
@Override
public String toString() {
return "MyRequest -- url:" + url + ",method:"