usługi() metoda należy do GenericServlet i może być przeciążony wspierać każdy rodzaj protokołu takiego jako Http, Ftp itp.
Następnie masz wyspecjalizowany serwlet do obsługi HttpProtocol, nazywamy go HttpServlet. HttpServlet zapewnia również domyślną implementację metod service() i doGet() oraz doPost().
Dlaczego nie należy zastępować metody service()?
Ponieważ nie jest dobrą praktyką zastępowanie metody serwisowej. Jeśli wywołasz dowolną metodę doxxx, to wewnętrznie wywoła ona metodę usługi HttpServlet. Więc nie ma potrzeby, abyś to wyraźnie nazywał.
kolejność wykonywania usługi():
usługi (ServletRequest, ServletResponse) ->
-> Połączenia
-> service (HttpServletRequest req, HttpServletResponse res)
-> połączenia
-> doGet/doPost (HttpServletRequest req, HttpServletRespo NSE res)
ten sposób można zastąpić usługę w przypadku, gdy chcesz: Kod
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);
}}
Realizacja podane przez Tomasz Nurkiewicz z tak społeczności tylko Overriding Service Method
I nie byłoby zaskoczony, jeśli książka po prostu stara się pokazać przykłady różnych sposobów korzystania z serwletu, w przeciwieństwie do powiedzenia "NALEŻY to zrobić, lub zrób to". Ponieważ tak naprawdę, jeśli tworzysz poważną aplikację, ostatecznie będziesz chciał studiować i wdrażać strukturę MVC (jak Struts, Spring lub Wicket), zamiast implementować rzeczy na poziomie serwletu. (Tylko sugestia do przyszłego czytania.) – Marvo