Spring MVC๋ ๋๋๋งํ๊ณ ์ ํ๋ View์ ๋
ผ๋ฆฌ์ ์ด๋ฆ๋ง ์ ๊ณตํ๋ฉด ํด๋น View์ ๋ฌผ๋ฆฌ์ ์์น๋ฅผ ์ฐพ์ ๋๋๋งํด์ค๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ View Resolver
๊ฐ ์ ๊ณตํ๋ค.
Spring MVC
์ Template Engine(Thymeleaf, freemarker)
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ "UserForm"
์ ๋ฆฌํดํ๊ฒ ๋๋ฉด resuource/templates
๋ฐ์ UserForm.html
์ ์ฐพ์ ๋๋๋ง ํด์ค๋ค.templates/response/hello.html
์ด ๋๋๋ง ๋๋ ๊ฒ ์
๋๋ค. @RequestMapping("/response-view-v2")
public String responseViewV2(Model model) {
return "response/hello";
}
ModelAndView
๊ฐ์ฒด๋ ๋๋๋งํ๊ณ ์ ํ๋ View์ ๋
ผ๋ฆฌ์ ์ด๋ฆ๊ณผ ํด๋น View์์ ์ฌ์ฉํ Model
์ ํจ๊ป ์ค์ ํฉ๋๋ค.
ModelAndView
๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์์ templates
ํด๋ ์ดํ์ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ค๋๋ค.View Resolver
๊ฐ prefix๋ก templates
๊น์ง์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.ModelAndView
์ addObject
๋ฉ์๋๋ฅผ ์ด์ฉํด key-value
์์ผ๋ก View๋จ์์ ์ฌ์ฉํ Model
์ ์ถ๊ฐํด์ค๋๋ค.ModelAndView
๋ฅผ ๋ฐํํ๊ฒ ๋๋ฉด ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ (ํด๋น url๋ก ์์ฒญ์ด ๋ค์ด์ฌ ๋) ์ค์ ํ View๋ฅผ ๋๋๋งํ๊ณ View์์ Model์ ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก ๋๊ฒจ์ค๋๋ค.@RequestMapping("/response-view-v1")
public ModelAndView responseViewV1() {
ModelAndView modelAndView = new ModelAndView("response/hello").addObject("data", "test");
return modelAndView;
}
@ResponseBody
@RequestMapping("/response-body-string-v3")
public String responseBodyStringV3() {
return "ok";
}
500 error
๋ฅผ ๋ฐ์์ํต๋๋ค. @RequestMapping("/response-body-string-v3")
public String responseBodyStringV3() {
return "ok";
}
@ResponseBody
์ ์ ๋ฌด ๋๋ฌธ์ธ๋ฐ์. @ResponseBody
๊ฐ ์๋ค๋ฉด ๋ฆฌํด๋๋ ๊ฐ์ด String์ด๋๋ผ๋ View Resolver
๊ฐ ๋์ํ์ง ์์ต๋๋ค. ๊ทธ๋๋ก ์ถ๋ ฅํ๋ ๊ฒ์ด์ง์.@ResponseBody
๊ฐ ์๋ค๋ฉด ๋ฆฌํด๋๋ String๊ฐ์ ๋ํด View Resolver
๊ฐ ๋์ํ์ฌ ํด๋นํ๋ View๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์ ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์
๋๋ค.HttpEntity
๋ฅผ ์์ํ๋ ResponseEntity
๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
ResponseEntity
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ์ํฉ์ ๋ง๋ HttpStatus code
๋ ์๋ต ๊ฐ๋ฅํฉ๋๋ค.@ResponseBody
์๋ตํ๋ฉด ์๋ฉ๋๋ค ! ! @ResponseBody
@RequestMapping("/response-body-json-v1")
public ResponseEntity<UserDto> responseBodyJsonV1() {
UserDto userDto = new UserDto();
userDto.setUsername("kim");
userDto.setAge(26);
return new ResponseEntity<>(userDto, HttpStatus.OK);
}
๊ฐ์ฒด ์์ฒด๋ฅผ ๋ฆฌํด ํ์ ์ผ๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
@ResponseBody
์ ์ํด ์์์ Http ์๋ต ๋ฉ์์ง์ Body์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.ResponseEntity
๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก HttpStatus code
๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด @ResponseStatus
๋ฅผ ์ฌ์ฉํฉ๋๋ค.@ResponseStatus(HttpStatus.OK)
@ResponseBody
@RequestMapping("/response-body-json-v2")
public UserDto responseBodyJsonV2() {
UserDto userDto = new UserDto();
userDto.setUsername("kim");
userDto.setAge(26);
return userDto;
}
์ธํ๋ฐ ๊น์ํ๋์ ์คํ๋ง MVC 1ํธ ์ ์๊ฐํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.