1、工程截圖:
2、封裝請求物件:通過輸入流,對http協議進行解析,拿到了http請求頭的方法和url:
/**
* @author wangjie
* @version 2018/11/9
* 封裝請求物件
* 通過輸入流,對http協議進行解析,拿到http請求頭的方法和url
}
3、封裝響應物件:基於http協議的格式進行輸出寫入。
/**
* @author wangjie
* @version 2018/11/9
* 封裝響應物件
* 基於http協議的格式進行輸出寫入。
*/public class myresponse
public void write(string content)throws ioexception
}
4、servlet請求處理基類:tomcat是滿足servlet規範的容器,所以tomcat需要提供api:doget/dopost/service。
/**
* @author wangjie
* @version 2018/11/9
* servlet請求處理基類
*/public abstract class myservlet else if(myrequest.getmethod().equalsignorecase("get"))}}
5、servlet實現類:提供2個實現類,用於測試。
/**
* @author wangjie
* @version 2018/11/9
* servlet實現類
*/public class findgirlservlet extends myservletcatch (ioexception e)
}@override
public void dopost(myrequest myrequest,myresponse myresponse) catch (ioexception e)}}
/**
* @author wangjie
* @version 2018/11/9
*/public class helloworldservlet extends myservlet catch (ioexception e)
}@override
public void dopost(myrequest myrequest,myresponse myresponse)catch (ioexception e)}}
6、servlet配置:對比之前在web開發中,會在web.xml中通過和指定哪個url交給哪個servlet來處理。
/**
* @author wangjie
* @version 2018/11/9
* servlet配置
*/ private string servletname;
private string url;
private string clazz;
this.servletname=servletname;
this.url=url;
this.clazz=clazz;
}public string getservletname()
public void setservletname(string servletname)
public string geturl()
public void seturl(string url)
public string getclazz()
public void setclazz(string clazz)
}
/**
* @author wangjie
* @version 2018/11/9
*/ //制定哪個url交給哪個servlet來處理
static
}
7、啟動類:
tomcat的處理流程:把url對應處理的servlet關係形成,解析http協議,封裝請求/響應物件,利用反射例項化具體的servlet進行處理。
/**
* @author wangjie
* @version 2018/11/9
* tomcat啟動類
*/public class mytomcat
public void start()
}catch (ioexception e)finally catch (ioexception e)}}
}}}public void dispatch(myrequest myrequest,myresponse myresponse)catch (classnotfoundexception e)catch (instantiationexception e)catch (illegalacces***ception e)
}public static void main(string args)
}
8、測試:
執行專案後,在瀏覽器輸入:localhost:8088/girl
在瀏覽器輸入:localhost:8088/world
實踐完成。
手寫乙個簡化版Tomcat
我們啟動tomcat時雙擊的startup.bat檔案的主要作用是找到catalina.bat,並且把引數傳遞給它,而catalina.bat中有這樣一段話 bootstrap.class是整個tomcat 的入口,我們在tomcat原始碼裡找到這個類,其中就有我們經常使用的main方法 這個類有兩...
手寫乙個ajax
在我看來,寫乙個ajax就需要5步,也就是5個單詞,這就是乙個ajax的流程。這五個單詞分別為 new open setrequestheader onreadystatechange send。記住這五個單詞你就有了ajax的整體的框架了。以上是最麻煩的一步,後面的步驟就比較簡單了。ajax.op...
手寫乙個佇列
佇列具有先進先出的特點,從隊尾新增元素,從隊首刪除元素。對於佇列,通常有兩種實現方式 陣列和鍊錶。package basicknowledge.集合框架.queue 基本功能 利用陣列實現乙個迴圈佇列 program summary author peicc create 2019 07 24 10...