반응형
* HttpServlet 과 Http Method
# HttpServlet 추상 클래스를 상속받아서 service를 호출할 때의 과정
HttpServlet 추상 클래스
HttpServlet 추상 클래스를 상속받은 Servlet04에서 service를 호출
이때 service는 해당 Servlet04에서 구현한 메서드가 아니라 상속받은 Httpservlet의 service 메서드이다.
만약, Servlet04에 service 메서드가 있다면 해당 클래스의 메서드가 구현됐을 것이다.
HttpServlet 클래스의 service 메서드는 req, res를 파라미터로 받아서
this.service(requset, response)로 변환하여 요청을 처리해준다.
매우중요!
단, 여기서 this.service란, Servlet04에 있는 service를 먼저 찾을 것이다.
만약 Servlet04에 service 메서드가 존재하지않는다면 ,
HttpServletRequest와 HttpServletResponse를 파라미터로 받은 service가
호출될 것이다.
또 다시 호출된 service는 doHead, doPost, doPut은 Servlet04에서 메서드를 찾을 것이다.
그리고 해당 메서드는 Servlet04 클래스에 존재하기 때문에 Servlet04의
doget과 dopost가 호출된다.
요약하자면, HttpServlet을 상속받은 서블릿 클래스에서 service() 메서드를 오버라이딩하면
해당 서블릿 클래스의 service() 메서드가 먼저 호출되고, super.service(req, res)를 통해
HttpServlet의 service() 메서드를 호출하면 doGet(), doPost() 등의 메서드가 호출되며,
이 메서드들은 해당 서블릿 클래스에 정의된 로직을 수행하게 됩니다.
반응형