2015-09-20 4 views
0

Я пробовал искать различия между ними. Я нашел код, где метод публичной службы, в свою очередь, вызывает защищенный метод обслуживания, передавая ему HttpServletRequest и HttpServletResponse. Но почему дополнительный защищенный метод обслуживания добавлен в класс HttpServlet? Есть ли польза? что произойдет, если его там нет?защищенный сервис (ServletRequest, ServletResponce) против государственной службы (HTTPServletRequest, HTTPServletResponce)

ответ

1

Я думаю JavaDoc объясняет все:

/** 
* Dispatches client requests to the protected 
* <code>service</code> method. There's no need to 
* override this method. 
* ... 
*/ 
public void service(ServletRequest req, ServletResponse res) 
    throws ServletException, IOException 

и

/** 
* Receives standard HTTP requests from the public 
* <code>service</code> method and dispatches 
* them to the <code>do</code><i>XXX</i> methods defined in 
* this class. This method is an HTTP-specific version of the 
* {@link javax.servlet.Servlet#service} method. There's no 
* need to override this method. 
*/ 
protected void service(HttpServletRequest req, HttpServletResponse resp) 

В принципе вариант метода public делает некоторые проверки, является ли на самом деле являются случаи HttpServletRequest и HttpServletResponse в ServletRequest и ServletResponse параметры соответственно , отбрасывает их и передает их защищенному методу, содержащему логику, специфичную для обработки HTTP-запросов.

Итак, если вы хотите просто переопределить логику, которая обрабатывает обработку HTTP-запроса, вы переопределите защищенный метод. Хотя, как указано в JavaDoc, который не должен быть действительно необходимым, но, вероятно, он может понадобиться в каком-то конкретном сценарии.

Смежные вопросы