Day 21 Spring (2)

정채림·2026년 1월 30일

Servlet

서버에서 실행되어 클라이언트의 요청을 처리하고, 그 결과를 동적으로 생성하여 응답하는 자바 프로그램
자바 웹 애플리케이션에서 특정 URL 요청에 대한 비즈니스 로직을 실행하는 핵심

servlet의 역할

  • 클라이언트가 보낸 데이터(HTTP Request)를 읽고 해석
  • 조회, 계산 등 비즈니스 로직을 수행
  • 결과를 생성하여 클라이언트에게 보냄
  • jakarta.servlet.http.HttpServlet 클래스를 상속받아 구현

servlet container의 역할

  • 서블릿의 생명주기(생성, 실행, 소멸) 관리
  • HTTP 요청을 받아 서블릿에게 전달
  • 서블릿의 응답을 받아 클라이언트에게 전송
  • 동시에 여러 요청이 들어와도 문제없이 처리

코드 예시 (영화 추천 API)

@WebServlet("/movies/recommendation")
public class MovieRecommendationServlet extends HttpServlet {

    private final List<String> recommendedMovies = List.of(
            "쇼생크 탈출",
            "대부",
            "다크 나이트",
            "인생은 아름다워"
    );

    private final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        int randomIndex = (int) (Math.random() * recommendedMovies.size());
        String randomMovie = recommendedMovies.get(randomIndex);
        Map<String, String> movieMap = Map.of("title", randomMovie);

        response.setContentType("application/json; charset=UTF-8");
        String json = objectMapper.writeValueAsString(movieMap);
        response.getWriter().print(json);
    }
}
@ServletComponentScan
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

MVC 모델

Controller

사용자의 HTTP 요청을 받아서 처리
URL 매핑을 통해 어떤 요청이 들어왔을 때 어떤 메소드를 실행할지 결정하고, 비즈니스 로직을 호출하고 데이터를 Model에 담아 View 이름을 반환합

@Controller

Model

Controller에서 View로 데이터를 전달할 때 사용하는 객체
Key-Value 형태로 데이터를 저장하며, Controller에서 처리한 결과 데이터를 Model에 추가하면 View에서 해당 데이터를 참조할 수 있음. 주로 Model, ModelAndView 클래스를 사용.

View

사용자에게 보여지는 화면을 담당.
Model에 담긴 데이터를 사용해 HTML을 생성하고 클라이언트에게 응답. Controller가 반환한 View 이름을 ViewResolver가 실제 View 파일과 매핑시켜 렌더링.

Thymeleaf

0개의 댓글