服務()方法屬於GenericServlet類和可以被重載以支持任何類型的協議,例如的作爲Http,FTP等
然後你有專門的servlet處理HttpProtocol,我們稱之爲HttpServlet。 HttpServlet還提供了service()和doGet()和doPost()方法的默認實現。
爲什麼我們不應該重寫service()方法?
因爲重寫服務方法不是一個好習慣。如果我們調用任何doxxx方法,那麼它將在內部調用HttpServlet的服務方法。所以你沒有必要明確地調用它。
訂購服務的執行()的:
服務(的ServletRequest,ServletResponse的) - >
- >調用
- >服務(HttpServletRequest的REQ,HttpServletResponse的水庫)
- >調用
- >的doGet/doPost方法(HttpServletRequest的REQ,HttpServletRespo NSE水庫)
這是可以如何重寫服務的情況下,你想:從SO社區通過托馬斯Nurkiewicz給出
protected void service(HttpServletRequest req, HttpServletResponse resp) {
String method = req.getMethod();
if (method.equals(METHOD_GET)) {
doGet(req, resp);
} else if (method.equals(METHOD_HEAD)) {
doHead(req, resp);
} else if (method.equals(METHOD_POST)) {
doPost(req, resp);
} else if (method.equals(METHOD_PUT)) {
doPut(req, resp);
} else if (method.equals(METHOD_DELETE)) {
doDelete(req, resp);
} else if (method.equals(METHOD_OPTIONS)) {
doOptions(req,resp);
} else if (method.equals(METHOD_TRACE)) {
doTrace(req,resp);
} else {
resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
}}
執行代碼只 Overriding Service Method
來源
2016-06-23 06:29:11
sky
我不會如果這本書只是試圖展示使用servlet的不同方式的例子,而不是說「你應該這樣做,或者那樣做」,那麼會感到驚訝。因爲真的,如果你正在開發一個認真的應用程序,你最終會學習和實現一個MVC框架(比如Struts,Spring或Wicket),而不是在servlet級別實現。 (只是對未來閱讀的建議。) – Marvo