servlet會先呼叫service 然後再根據service方法中的定義呼叫doget,dopost等方法
servlet中,service方法是一直存在的,因為最高層的介面servlet(像httpservlet等具體的servlet都是直接或者間接實現了這個介面)裡面就有這個方法,所以不管是怎樣的servlet類,都有service方法,沒有service就不能稱為乙個servlet了。
而對於service方法,一般來說這個方法是不需要重寫的,因為在httpservlet中已經有了很好的實現,它會根據請求的方式,呼叫doget,dopos以及其他的do***t方法,也就是說service是用來轉向的,所以我們一般寫乙個servlet,只需要重寫doget或者dopost就可以了。如果重寫了service方法,那麼servlet容器就會把請求交給這個方法來處理,倘若你重寫的service方法沒有呼叫do***,即使你在servlet中又重寫了其他doget dopost等也是不會被呼叫的 因為servlet的service被自動呼叫(就像init destory一樣),所以如果你由於某種需要,需要重寫service方法,並且更具不同的method呼叫dopost doget等時,就要在末尾加上一句super.service(),這樣就可以解決問題了。
通過api可以看到在httpservlet類中的兩個service方法:service(servletrequest, servletresponse)方法是重寫的其父類genericservlet類的方法,這個方法是公共的(public),其作用是接受客戶端的請求並將其傳遞給service(httpservletrequest, httpservletresponse)方法;service(httpservletrequest, httpservletresponse)方法是httpservlet類定義的方法,是受保護的(protected),主要作用是接受標準的http請求(httpservletrequest),並根據請求方式不同分發到不同的do***(httpservletrequest, httpservletresponse)方法。 這就是httpservlet有兩個service方法的原因了。一般情況下我們的servlet只需重寫受保護的service方法就夠了。
為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?
from 本文是從 why why why why why are you a developer?這篇文章翻譯而來。做乙個程式設計師很忙,你需要去寫 去建立meme,去進行測試,以及隨時關注最新最熱的gem 開源軟體技術。最近,我一直在想讓自己的節奏慢下來,去做一些心裡一直想做但沒有去做的事,去思...
03 為什麼封裝,為什麼有this?
為什麼封裝?嬰兒太多了,所以我們會考慮將每個出生的嬰兒的 文件 我們都會放於乙個盒子裡 這樣方便以後我們查詢他的身份證資訊。於是在這個盒子上,我們打了乙個孔,叫set 方法,如果是身份證,我們就取名 setcode 方法,這樣就將乙個人的身份證資訊建立 set了。但放進去後,我們有時候還需要檢驗這個...
為什麼無法訪問mysql mysql為什麼無法訪問
mysql無法訪問有兩種情況 乙個是mysql沒有分配許可權,使用grant語句分配訪問許可權即可格式 grant 許可權 on 資料庫名.表名 使用者 登入主機 identified by 使用者密碼 grant select,update,insert,delete on to zhxia id...