什么是servlet?

馬克-to-win:在講授Servlet之前,我們先回顧一下,我們在講 第九章:網(wǎng)絡(luò)編程(Socket)那章時,留過的一個作業(yè):
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。



課外作業(yè):
6)請做一個Web服務器,客戶端能打印出一個html文件。

馬克-to-win:在講Socket網(wǎng)絡(luò)編程時,在一次請求(request)響應(response)交互過程中,作為基本功能,服務器可以從客戶端獲取數(shù)據(jù),之后再向客戶端寫回去數(shù)據(jù)。這之間只要服務器從本地讀出一個html文件即可,完成以上作業(yè)非常簡單。馬克-to-win:現(xiàn)在如果作業(yè)難度繼續(xù)增加,變成:請做一個服務器,要求客戶端,1)能夠傳送java文件名稱到服務器,2)且運行服務器端的這個java文件,3)之后把運行結(jié)果打印回客戶端。對于上面作業(yè)的第一第三項功能點,對我們來講易如反掌。對于第二項功能點,我們只需要調(diào)用jdk先編譯java文件成為class,再調(diào)用jre運行class文件,輸出結(jié)果不要輸出到屏幕像以往一樣,而是輸入回我們的正編寫的Server程序,接著我們的Server程序就可以把結(jié)果打印回客戶端了。我上面說的只是思路,真正實現(xiàn)起細節(jié)來,工作量是驚人的!馬克-to-win:如果你能完成以上第一步作業(yè),恭喜你:你完成了一個Web服務器,代表產(chǎn)品:Apache服務器的雛形。如果你完成了第二步作業(yè),恭喜你:你完成了一個Web容器的雛形,代表產(chǎn)品Tomcat。咱們作業(yè)當中提到的那個java文件有一個專業(yè)術(shù)語:叫做Servlet。講到這兒,我認為,是時候可以提出Servlet的標準定義了:Servlet就是一段運行在Web容器里的Java程序。(自己不能獨立運行)




其實可以用兩張圖來概括我剛才講的東西。







我們剛才的作業(yè),是在講java基礎(chǔ)那部分知識時留的。我們那一部分學習過程當中,事無巨細,什么都得我們自己做。從我們學習jsp這部分開始,我們就需要逐漸開始改變我們的思想。即大家伙一塊兒來編程,一人編一部分。這樣可以使我們最終的項目變得非常完美。拿上圖舉例說,Web瀏覽器是火狐,Web容器和 Web服務器是tomcat,都不是我們編的,我們也知道這兩個軟件的工作量絕不白給,非常完美!我們只需要在瀏覽器地址欄當中敲入地址http://localhost:8080/abc/1.html或http: //localhost:8080/abc/bbb,就可以得到我們想要的abc目錄下的1.html或bbb這個servlet。我們只需要編我們的 1.html和bbb這個servlet就可以了。8080端口指定localhost機器當中的tomcat必須作出響應。(端口對應軟件).

馬克-to-win:裝個Tomcat,編一段java程序,全世界的人,都可以利用火狐等有著漂亮界面的瀏覽器在他自己的機器上執(zhí)行我們編的一段java 程序。這明顯比前一段時間我們學的客戶端服務器的Socket的技術(shù),要先進了很多。最大的原因是我們不用把大量時間花在編寫瀏覽器和Web容器上。我們只需要把精力集中在編寫這個Servlet上就可以了。這servlet技術(shù)太神奇了!Sun公司是如何實現(xiàn)這件事情的呢?