6. Spring MVC 아주 기초

    앞에서 MVC 패턴을 활용한 동적 html을 만들었다. 이번에는 웹서버로부터 동적으로 입력을 받아, 그 값이 나오는 동적 MVC 패턴을 만드는 내용이다.

     

    동적 MVC 패턴 만들기


    1. Controller Class에 'hello-mvc'를 추가 mapping한 메서드를 만든다.

    생성자에 @requestParam("name") String name 라는 매개변수를 줄 수 있다. 이 매개변수는 웹페이지에서 접근 경로를 "localhost:8080/hello-mvc?name="으로 설정해야한다. 이렇게 하면 name= 뒷쪽에 있는 값들이 requestParam에 있는 "name"에 들어가게 되고, 이 값이 String name 매개변수로 들어가게 된다.

    2. name 매개변수를 model.addAttribute를 해서 model에 실어준다. 여기서 key는 "name"으로 했고, data는 name으로 model에 실었다. return 값은 'hello-template'로 했다.

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

    3. resource-template 폴더에서 'hello-template' 이름을 가지는 html을 만들어준다. html은 아래와 같이 간단히 만들어준다.

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

    4. 빌드한 후 "localhost:8080/hello-mvc?name="을 한 후 원하는 값을 뒷쪽에 넣어보면, 동적 페이지에 기입했던 값이 나오는 것을 확인할 수 있다.

     

    위의 동작 방식


    위 코드의 동작 방식은 아래와 같이 정리할 수 있다. 

    1. hello-mvc url에서 동적으로 값을 입력 받는다.
    2. hello-mvc와 mapping 된 controller를 찾아서 메서드를 실행시킨다. 이 때, name 데이터를 모델에 싣고, viewResolver가 'hello-template.html'을 찾는다
    3. 'hello-template.html'에 data 자리에 name에 들어왔던 데이터가 들어가고, 빌드가 완료되어 웹 브라우저에 전달된다.

     

     

    추가로 알아두면 좋은 것들


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

    thymeleaf로 html을 꾸몄을 때, body 부분이 완료되고 난 후에 값이 적혀있는 부분이 있다. 예를 들면 위의 hello! empty 같은 부분이다. 이 부분은 어떤 역할을 할까? 

    이 부분은 서버에 빌드하지 않고, 절대경로로 찾아갔을 때 보여지는 값이라고 한다. 빌드를 하게 될 경우 hello! empty가 나오지 않지만, 빌드를 하지 않았을 때 웹브라우저에 절대경로를 치고 찾아가면 hello! empty가 보이는 것을 확인할 수 있다. 절대 경로는 IDE에 손쉽게 찾아갈 수 있다.

    위와 같이 각 템플릿의 html의 절대주소를 복사할 수 있다. 절대 주소를 복사한 후, 이것은 웹브라우저에 붙여넣으면 다음과 같은 결과가 나온다.

    댓글

    Designed by JB FACTORY