본문 바로가기
Server/Spring

HTML 페이지 렌더링 시 요청받은 데이터 포함하기(매개변수를 MVC패턴으로 전달해 렌더링하기)

by print_soo 2024. 8. 24.

1. MVC 패턴을 이용하여 특정 경로로 들어오는 GET 요청 처리하는 컨트롤러 만들기

(파일 경로: src/main/java/hello_spring/controller/HelloController)

 

@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
    model.addAttribute("name", name);
    return "hello-template";
}

 

 

코드를 하나씩 해석보자. 

@GetMapping("hello-mvc")

-> /hello-mvc 경로로 들어오는 HTTP GET 요청을 처리할 메서드를 지정합니다.

 

public String helloMvc(@RequestParam("name") String name, Model model){

-> helloMvc라는 이름의 메서드를 정의합니다. 이 메서드는 name이라는 요청 매개변수를 받아(@RequestParam("name")) 그 값을 name이라는 변수에 저장하고, Model 객체를 통해 데이터를 뷰에 전달합니다.

 

model.addAttribute("name", name);

-> 뷰에 전달할 데이터로 name이라는 이름으로 요청에서 받은 name 값을 모델에 추가합니다. 이 값은 뷰 템플릿에서 사용할 수 있습니다.

 

return "hello-template";

-> hello-template이라는 이름의 뷰(보통 hello-template.html)를 반환하여, 해당 뷰를 렌더링하도록 합니다.

 

 

2. hello-template Page 만들기

(파일 경로: src/main/resources/templetes/hello-template.html)

 

아래의 html을 구성해서 간단한 hello-template Page를 만들어보자.

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>



 

기존의 방식처럼 localhost:8080/hello-mvc라고 하면 페이지가 실행되지 않느다. 

그 이유는 매개변수 name의 값이 전달되지 않았기 때문이다. 따라서 localhost:8080/hello-mvc?name=값 형태로 url을 구성해줘야한다.