서버에서 실행되어 클라이언트의 요청을 처리하고, 그 결과를 동적으로 생성하여 응답하는 자바 프로그램
자바 웹 애플리케이션에서 특정 URL 요청에 대한 비즈니스 로직을 실행하는 핵심
@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);
}
}
사용자의 HTTP 요청을 받아서 처리
URL 매핑을 통해 어떤 요청이 들어왔을 때 어떤 메소드를 실행할지 결정하고, 비즈니스 로직을 호출하고 데이터를 Model에 담아 View 이름을 반환합
@Controller
Controller에서 View로 데이터를 전달할 때 사용하는 객체
Key-Value 형태로 데이터를 저장하며, Controller에서 처리한 결과 데이터를 Model에 추가하면 View에서 해당 데이터를 참조할 수 있음. 주로 Model, ModelAndView 클래스를 사용.
사용자에게 보여지는 화면을 담당.
Model에 담긴 데이터를 사용해 HTML을 생성하고 클라이언트에게 응답. Controller가 반환한 View 이름을 ViewResolver가 실제 View 파일과 매핑시켜 렌더링.
Thymeleaf