2014-12-04 13 views
1

servlet containerdoGet 또는 doPost 메서드를 호출할지 여부를 어떻게 알 수 있습니까?doGet 또는 doPost 메서드 호출

내가 요청을 할 때 doGet가 호출되면, 내가 게시 요청을 할 때 doPost이 호출되지만, 이것을 결정하는 로직이 어디에 있는지.

답변

3

doGet() 또는 doPost() (service() 메서드가 호출되며 라이프 사이클에서 읽는 동안 웹 컨테이너에서 호출됩니다.)

service() 메서드는 사용 된 HTTP 메서드를 감지하고 doGet(), doPost()HTTPServlet에서 HTTP 요청을 처리하는 다른 방법을 위임합니다. 또한 ServletRequestServletResponse 개체를 HttpServletRequestHttpServletResponse 개체에 캡슐화하며 HTTP 헤더의 추가 컨텍스트 데이터를 포함합니다.

@helderdarocha에 Tahnks.

For more;

0

javax.servlet.http.HttpServlet.service (HttpServletRequest req, HttpServletResponse resp)에는 그에 대한 논리가 들어 있습니다.

1

논리는 HTTP 프로토콜에 서블릿에 의해 경영 (Tomcat, Glassfish, Jetty, ...)

요청의 첫 번째 단어는 HTTP 동사이며 일반적으로 GET 또는 POST이지만 DELETE, PUT, OPTIONS, HEAD, TRACE 일 수 있습니다. , ...

서블릿 컨테이너는 서블릿의 service 메소드를 호출하지만, HttpServlet.service 메소드의 기본 구현에는 적절한 메소드로 디스패치하는 로직이 포함됩니다. Javadoc의에서 추출 : 보호 서비스 방법

public void service(ServletRequest req, 
       ServletResponse res) 
     throws ServletException, 
       java.io.IOException 

파견 클라이언트 요청을. 이 방법을 재정의 할 필요가 없습니다.

protected void service(HttpServletRequest req, 
        HttpServletResponse resp) 
      throws ServletException, 
        java.io.IOException 

는 공공 서비스 방법에서 표준 HTTP 요청을 수신하고이 클래스에 정의 된 doXXX 방법에를 전달합니다. 이 메소드는, Servlet.service (javax.servlet.ServletRequest, javax.servlet.ServletResponse) 메소드의 HTTP 고유의 버젼입니다. 이 방법을 재정의 할 필요가 없습니다.