DEV/Java

Spring Response와 Request

Beomsu Koh 2023. 5. 13.

Spring Response와 Request

Servlet은 무엇인가

서블릿은 웹 브라우저(클라이언트)와 서버 간의 대화에서 중개인과 같습니다.
브라우저에서 요청을 수신하고 처리하고 응답을 다시 보내는 서버에서 실행되는 작은 프로그램입니다.

스프링 프레임워크의 맥락에서 우리는 종종 특별한 종류의 서블릿인 DispatcherServlet에 대해 이야기합니다.
점포의 점장이라고 생각하시면 됩니다.
고객(요청)이 매장에 들어오면 관리자(DispatcherServlet)가 고객을 올바른 부서(컨트롤러)로 안내합니다.
부서에서 고객이 필요로 하는 모든 것을 갖추면(요청 처리) 관리자는 고객이 이를 받도록 합니다(응답 보내기).

즉, DispatcherServlet은 모든 요청을 수신하고 처리를 위해 보낼 위치를 결정하는 것입니다.
일단 처리되면 응답을 다시 클라이언트로 보내는 일도 처리합니다.
이는 훌륭한 매장 관리자가 원활한 운영을 보장하는 것처럼 작업 흐름을 체계적으로 유지하는 데 도움이 됩니다.

전반적으로 Spring의 Servlet, 특히 DispatcherServlet은 웹 애플리케이션에서 데이터 흐름을 관리하는 데 도움을 주어 요청과 응답이 필요한 곳으로 이동하도록 합니다.

Exmale. HttpServletRequest 및 HttpServletResponse

예제를 통해서 Spring의 응답과 요청 방법을 알아 보도록 하겠습니다.

제공된 Java 코드는 HTTP 요청 및 응답을 처리할 때 HttpServletRequest 및 HttpServletResponse 객체의 사용법을 보여주는 간단한 서블릿을 나타냅니다

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
    
@WebServlet("/rollDice2")
public class TwoDiceServlet extends HttpServlet {
    int getRandomInt(int range) {
        return new Random().nextInt(range)+1;
    }

    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        int idx1 = getRandomInt(6);
        int idx2 = getRandomInt(6);

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("</head>");
        out.println("<body>");
        out.println("<img src='resources/img/dice"+idx1+".jpg'>");
        out.println("<img src='resources/img/dice"+idx2+".jpg'>");
        out.println("</body>");
        out.println("</html>");
        out.close();	    
    }
}

이 코드의 주요 구성 요소를 분석해 보겠습니다:

  1. 웹서브렛(“/rollDice2”)

    1. 이 어노테이션은 서버에 이 클래스가 서블릿이며 “/rollDice2” URL로 들어오는 요청을 이 서블릿에 매핑해야 함을 알려줍니다
  2. public void service(HttpServletRequest 요청, HttpServletResponse 응답)

    1. 클라이언트가 “/rollDice2” URL을 요청할 때 호출되는 메인 메서드입니다.
    2. 이 메서드는 GET 요청과 POST 요청을 모두 처리합니다
  3. response.setContentType(“text/html”); response.setCharacterEncoding(“utf-8”);

    1. 이 줄은 클라이언트에 전송할 응답의 콘텐츠 유형과 문자 인코딩을 설정합니다
  4. PrintWriter out = response.getWriter();

    1. 이 코드 줄은 클라이언트에 문자 텍스트를 전송하는 데 사용할 수 있는 PrintWriter 객체를 응답에서 가져옵니다.
  5. out.println(…)

    1. 이 코드 줄은 PrintWriter를 사용하여 HTML 문서를 클라이언트로 다시 보냅니다.
    2. 이 문서에는 주사위 굴리기 결과를 보여주는 두 개의 이미지 태그가 포함되어 있습니다
  6. out.close();: 이 줄은 시스템 리소스를 확보하기 위한 필수 단계인 PrintWriter를 닫습니다.

전반적으로 이 코드는 HttpServletRequest 및 HttpServletResponse 객체를 사용하여 HTTP 요청을 처리하고 HTTP 응답을 전송하는 방법을 보여줍니다.

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

'DEV > Java' 카테고리의 다른 글

Java 런타임에 매개변수 이름 얻는 방법  (0) 2023.05.19
Spring의 코드 분리  (0) 2023.05.18
Spring의 HTTP 처리  (0) 2023.05.13
Aspect-oriented programming (AOP)  (0) 2023.05.11
Spring  (0) 2023.05.11

댓글