#說實話
這個鬼servlet我聽說過它好多年了,但是我真的不知道它到底是干啥用的。內心里總覺得這是個很復雜的,絕對是讓人難以理解的東西,我真的感覺自己很抗拒它,不想知道,不想去了解。可是我還是不得不去研究下它,因為我想知道Tomcat這個鬼東西,要想知道Tomcat的事,就必須要知道跟Tomcat纏繞在一起的servlet。
今天之前我總覺得這個servlet一定跟http協議 , TCP/IP ,什么應用層,傳輸層 等這些亂七八糟的,一輩子都搞不懂的破事兒有關系。總把Servlet和太多東西聯系起來,以為它是個很復雜的東西。其實不是。
#servlet到底是啥?
既然上面說了servlet不復雜,那servlet到底是啥。 事實上,servlet就是一個Java接口。接口的作用是啥,是規范!
什么網絡協議,什么http,什么傳輸層應用層這些牛鬼蛇神 servlet統統管不着。
servlet這個接口只有5個方法。
servlet接口定義的是一套處理網絡請求的規范。
其中最主要的是兩個生命周期方法init(),destroy(),還有一個處理請求的service().
所有想要處理網絡請求的類,都要回答這3個問題:
1)你初始化時要做什么
2)你銷毀時要做什么
3)你接受到請求時要做什么
這是Java給的一種規范
servlet是一個規范,那實現了servlet的類,就能處理請求了么?
不好意思,答案:不能
#是哪兒用到了servlet?
寫一個servlet的時候,我沒從來不會在servlet中寫什么監聽8080端口的代碼,servlet不會直接和客戶端打交道!那請求怎么來到servlet呢?答案是servlet容器,比如我們最常用的Tomcat ,
Tomcat才是與客戶直接打交道的家伙,它監聽端口,請求過來后,根據URL信息,確定要將請求交給哪個servlet去處理,然后調用那個servlet的service方法,service方法返回一個response對象,Tomcat再把這個response返回給客戶端。
參考
https://www.zhihu.com/question/21416727
https://www.zhihu.com/question/21416727/answer/339012081