HTTP GET 및 POST 요청을 처리하는 방법

2024. 11. 15. 23:17정보처리,전산/JAVA

반응형

 

Java Servlet 코드 설명

protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getWriter().append("Served at:").append(request.getContextPath());
}

 

  • doGet 메서드:
    • 이 메서드는 HTTP GET 요청을 처리한다.
    • HttpServletRequest 객체 (request)는 들어오는 요청에 대한 정보를 담고 있으며, URL, 헤더, 파라미터 등의 데이터를 포함한다.
    • HttpServletResponse 객체 (response)는 클라이언트에 응답을 보내는 역할을 한다.
    • 메서드는 "Served at:"라는 문자열을 응답에 추가하고, 그 뒤에 request.getContextPath()를 추가한다. getContextPath()는 웹 애플리케이션의 컨텍스트 경로를 반환하는 메서드이다. , /your-web-app와 같은 값이 반환된다.
    • response.getWriter()는 응답 본문에 데이터를 쓰기 위해 사용되며, append를 사용해 컨텍스트 경로를 응답에 추가한다.
protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);  // doGet 메서드를 호출
}

 

  • doPost 메서드:
    • 이 메서드는 HTTP POST 요청을 처리한다.
    • 현재 doPost()는 doGet()을 호출하여, POST 요청도 GET 요청과 동일한 방식으로 처리한다. 즉, POST 요청이 오면 doGet(request, response)를 호출해 GET 요청처럼 처리한다.
    • POST 요청은 일반적으로 데이터를 전송하는 용도로 사용되지만, 여기서는 GET 요청과 같은 방식으로 응답을 처리한다.

이 코드가 동작하는 방식:

  1. GET 요청이 들어오면 doGet() 메서드가 실행된다.
  2. doGet() 메서드는 "Served at:"와 그 뒤에 애플리케이션의 컨텍스트 경로를 응답 본문에 작성한다.
  3. POST 요청이 들어오면 doPost() 메서드가 실행된다.
  4. doPost() 메서드는 doGet() 메서드를 호출하여, POST 요청도 GET 요청과 같은 방식으로 처리한다.

요약:

  • 이 서블릿은 GET 요청과 POST 요청을 동일하게 처리한다.
  • GET 요청이 오면 "Served at: /your-web-app"와 같은 형식으로 응답이 돌아온다.
  • POST 요청이 오면, GET 요청과 같은 방식으로 응답을 처리한다. (현재 POST 요청을 별도로 처리하지 않고 GET 요청과 동일한 방식으로 처리하고 있다.)

사용 예시:

서블릿을 배포하고 다음과 같은 요청을 보낼 수 있다:

  • GET 요청: 응답으로 "Served at:/your-web-app"과 같은 문자열이 반환된다.
  • POST 요청: 응답은 GET 요청과 동일하며, "Served at:/your-web-app"과 같은 값이 반환된다.

 

 

 

 

 

 

 

 

 

■ 서블릿의 생명주기 메서드인 생성자, init(), doGet()을 구현.

System.out.println("FirstServlet의 생성자 호출됨");

 

  • 이 부분은 생성자에서 호출된다.
  • 서블릿이 생성될 때 System.out.println()을 통해 "FirstServlet의 생성자 호출됨" 메시지를 출력한다.
  • 서블릿 객체가 생성될 때 콘솔에 출력된다.
public void init(ServletConfig config) throws ServletException {
    System.out.println("FirstServlet의 init() 호출");
}

 

  • init() 메서드는 서블릿이 최초로 초기화될 때 호출된다.
  • 서블릿이 웹 서버에 의해 최초로 호출되기 전에 한 번만 실행된다.
  • 이 코드에서는 init() 메서드에서 "FirstServlet의 init() 호출"이라는 메시지를 출력한다.
  • ServletConfig는 서블릿에 대한 설정 정보를 제공하며, 보통 서블릿을 초기화할 때 사용된다.
 
 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("FirstServlet의 doGet() 호출됨");
    
    String one = request.getParameter("one");
    String two = request.getParameter("two");
    
    System.out.println("one=" + one + " two=" + two);
}

 

  • doGet() 메서드는 HTTP GET 요청이 들어올 때마다 호출된다.
  • 이 메서드에서는 "FirstServlet의 doGet() 호출됨" 메시지를 출력하여 doGet()이 호출되었음을 알린다.
  • 그 후, request.getParameter("one")와 request.getParameter("two")를 사용하여 요청 파라미터 one과 two의 값을 가져온다.
  • 그 값을 콘솔에 출력하는데, "one=값 two=값" 형태로 출력된다.

 

  1. 생성자: 서블릿 객체가 생성될 때 "FirstServlet의 생성자 호출됨" 메시지가 출력된다.
  2. init() 메서드: 서블릿이 최초로 초기화될 때 "FirstServlet의 init() 호출" 메시지가 출력된다.
  3. doGet() 메서드: HTTP GET 요청이 들어올 때마다 "FirstServlet의 doGet() 호출됨" 메시지가 출력되고, 요청 파라미터 one과 two의 값을 출력한다.
FirstServlet의 doGet() 호출됨
one=123 two=456

전체 코드:

public class FirstServlet extends HttpServlet {
    // 생성자
    public FirstServlet() {
        System.out.println("FirstServlet의 생성자 호출됨");
    }

    // init() 메서드
    public void init(ServletConfig config) throws ServletException {
        System.out.println("FirstServlet의 init() 호출");
    }

    // doGet() 메서드
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("FirstServlet의 doGet() 호출됨");
        
        String one = request.getParameter("one");
        String two = request.getParameter("two");
        
        System.out.println("one=" + one + " two=" + two);
    }
}

서블릿의 실행 흐름:

  1. 서블릿이 처음 로드될 때 생성자가 호출되고, init() 메서드가 호출된다.
  2. 클라이언트가 GET 요청을 보내면 doGet() 메서드가 호출된다.
  3. doGet()에서는 요청 파라미터를 읽고, 그 값을 콘솔에 출력한다.

참고:

  • 서블릿은 웹 서버에 배포되면 자동으로 호출되는 생명주기를 가지고 있다.
  • doGet()은 HTTP GET 요청에 대한 응답을 처리하는 메서드이며, POST 요청은 doPost() 메서드로 처리된다.
 
 

 

 

반응형