首先你要學好http協議,不會這個就不要想那麼多,最基本的你要知道報文格式,因為返回訊息給瀏覽器的時候要用到。
另外你得學好java基礎,這裡面涉及到執行緒池,反射,以及網路程式設計這些比較重要的東西。
另外學完這些就可以簡單模擬一下了。
這裡只說模擬,不說jsr規範。你需要一個監聽執行緒,這個執行緒負責監聽客戶請求,請求到達建立一個socket處理這個請求。
servlet的初始化是採用懶載入方式,所以你會發現第一次訪問的時候會比較慢,因為它是在第一次訪問的時候才會初始化。
當然,如果你在xml檔案裡指定了load on startup的話就會在專案啟動的時候載入,所以你現在模擬只需要直接啟動的時候載入就行了。
另外,servlet是單例的,所以只能有一個例項。
這裡也假設你只有一個Context,因為實際應用中不同Context之間的servlet是互不干涉的,所以如果你要區分Context的話還要做Context對映,這就太麻煩了。
servlet的載入採用反射的方式,當然servlet該有的方法都得有。
剩下的就是http的事了,該返回啥就返回啥。
所以總結就是一句話,採用反射初始化servlet,呼叫service方法,響應請求。
這裡面還有很多細節的東西,可以自己看tomcat原始碼。
首先你要學好http協議,不會這個就不要想那麼多,最基本的你要知道報文格式,因為返回訊息給瀏覽器的時候要用到。
另外你得學好java基礎,這裡面涉及到執行緒池,反射,以及網路程式設計這些比較重要的東西。
另外學完這些就可以簡單模擬一下了。
這裡只說模擬,不說jsr規範。你需要一個監聽執行緒,這個執行緒負責監聽客戶請求,請求到達建立一個socket處理這個請求。
servlet的初始化是採用懶載入方式,所以你會發現第一次訪問的時候會比較慢,因為它是在第一次訪問的時候才會初始化。
當然,如果你在xml檔案裡指定了load on startup的話就會在專案啟動的時候載入,所以你現在模擬只需要直接啟動的時候載入就行了。
另外,servlet是單例的,所以只能有一個例項。
這裡也假設你只有一個Context,因為實際應用中不同Context之間的servlet是互不干涉的,所以如果你要區分Context的話還要做Context對映,這就太麻煩了。
servlet的載入採用反射的方式,當然servlet該有的方法都得有。
剩下的就是http的事了,該返回啥就返回啥。
所以總結就是一句話,採用反射初始化servlet,呼叫service方法,響應請求。
這裡面還有很多細節的東西,可以自己看tomcat原始碼。