Programming-[Backend]/Spring

[스프링 웹MVC] 12. 스프링 MVC - 응답 정보 처리 기능

컴퓨터 탐험가 찰리 2021. 8. 12. 10:04
728x90
반응형

 

 

 

1. View 처리방식

 

 

응답을 단순 text, JSON 정보로 보내는 것이 아니라 View로 보내는 방법을 배운다. MVC 패턴의 마지막 단계라고 할 수 있다.  스프링부트에서 View를 처리하는 방식은 Controller의 viewPath를 기반으로 static, 또는 동적인 templates의 html 파일을 반환하는 방식이다.

 

resources 경로 내부에 '/static', '/public', '/resources', '/META-INF/resources' 디렉토리가 있으면 그 디렉토리 내부의 view 파일들을 참조하는 방식으로 작동한다. 여기서 static 디렉토리에는 정적 리소스 정보를, templates 폴더에는 동적 HTML 정보를 넣어주는 것이 일반적이다.

 

 


 

 

2. 응답 처리 - 정적 리소스, 뷰 템플릿

 

 

이전 ServletController(Handler)에서 ModeView 객체를 받아와서 처리했던 것처럼, SpringMVC에서는 ModelAndView 객체를 받아와서 처리한다. 그리고 .addObject() 메서드를 통해 데이터를 담아줄 수 있다.

 

ModelAndView 객체에 담긴 데이터를 View(.html)파일에서 타임리프 문법을 통해 렌더링한다. HTML 컨텐츠인 "블라블라" 라는 문자열을 'data'라는 이름으로 바인딩된 객체가 치환하게 된다. 타임리프 문법에 대해서는 springMVC-2편에서 배우게 된다.

 

 

ModelAndView 반환

 

 

java/hello/springmvc/basic/response/ResponseViewController.java

 

1
2
3
4
5
6
7
8
9
@Controller
public class ResponseViewController {
    @RequestMapping("response-view-v1")
    public ModelAndView responseViewV1() {
        ModelAndView mav = new ModelAndView("response/hello")
                .addObject("data""hello!");
        return mav;
    }
}
cs

 

 

resources/templates/response/hello.html

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<p th:text="${data}">블라블라</p>
</body>
</html>
cs

 

 


 

String 반환

 

 

model을 파라미터로 받아와서 data값을 넣어주고, viewPath를 String으로 반환한다. 앞선 글에서 배웠듯이, 이렇게하면 String으로 지정된 viewPath로 forward가 된다.

 

 

java/hello/springmvc/basic/response/ResponseViewController.java

 

1
2
3
4
5
@RequestMapping("response-view-v2")
    public String responseViewV2(Model model) {
        model.addAttribute("data""hello!");
        return "response/hello";
    }
cs

 

 

 

Thymeleaf 스프링부트 설정

 

String을 반환하여 viewPath를 받는 경우, View 파일의 절대경로로 이동하기 위해 viewPath의 앞과 뒤에 prefix와 suffix가 붙는다고 배웠다. 이런 처리를 해주는 것은 build.gradle에 'org.springframework.boot:spring-boot-starter-thymeleaf' 라이브러리가 추가되어 있어서, 처리를 위한 ThymeleafViewResolver와 필요한 스프링 빈들을 자동으로 등록해주기 때문이다. 설정을 변경하고 싶다면 application.properties에서 'spring.thymeleaf.prefix=classpath:/templates/' 와 'spring.thymeleaf.suffix=.html' 설정을 바꿔주면 된다.

 

 


 

 

참조

 

 

1. 인프런_스프링 MVC 1편 - 백엔드 웹개발 핵심 기술_김영한 님 강의

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

728x90
반응형