我們常常在用servlet介面時,一般都會繼承於httpservlet,重寫doget和dopost方法,但其底層原理是怎麼實現的,沒有進行了解,下面我就談談自己的見解
當使用者傳送請求時,tomcat伺服器預設找帶有(servletrequest req,servletresponse resp)的service方法,而該類中只有service(httpservletrequest req, httpservletresponse resp),沒有servlet的service方法,但是子類繼承了httpservlet,子類如果沒有該方法,預設呼叫父類(httpservlet)的方法,檢視httpservlet原始碼時,找到servlet的service方法,原始碼如下:
檢視原始碼發現servlet的service方法,將(servletrequest req,servletresponse resp)強轉為帶有http協議的請求和響應物件,最後再次呼叫自身的service方法,這時 需要查閱該service的原始碼看一看 做了什麼事情:
我們只擷取部分**
我們檢視原始碼發現,servlet呼叫自身的service方法後,將強轉後帶有http協議的請求和響應傳進來,此時發現兩個service出現了,方法名相同引數也相同(方法重寫),執行的是子類重寫後的方法,而帶有http協議的service方法中,通過請求所攜帶的資訊,獲取到請求的方法(get或post),最後呼叫doget和dopost方法
因此繼承httpservlet重寫service方法,可以間接實現servlet介面
總結:乙個類想通過瀏覽器訪問到,必須直接或間接實現servlet介面
另外我自己也畫了一張圖 ,供大家進一步理解:
Servlet的兩種配置
1 在web.xml中配置 index.htmlwelcome file welcome file list stunameparam name 王永亮param value context param servlet註冊名servlet name 全限定類名 包名 類名 servlet class...
兩種Servlet的路徑配置
來吧,看看我在過去的一小時裡面折騰了個什麼玩意兒 首先介紹乙個知識點,然後再說一下我遇到的bug?servlet的url就是在瀏覽器中輸入了之後會直接訪問到的位址 相對路徑 比如在我們專案裡面,專案執行之後的上下文位址是 http localhost 8080 test,firstservlet的u...
servlet兩種配置方法詳解
1 2 3 demoaction 4 5 com.uplooking.controller.demoaction 6 1 7 8 11 demoaction 12 13 demoaction 3 匹配到以後,找到servlet標籤中的servlet class標籤中對應servlet類的src資料夾...