Spring
Framework
๐[Spring] Spring MVC์์ View
๊ฐ์ฒด.
1๏ธโฃ View
๊ฐ์ฒด.
- Spring MVC์์
View
๊ฐ์ฒด๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ต์ข
์ถ๋ ฅ์ ๋ด๋นํ๋ ๊ตฌ์ฑ ์์์
๋๋ค.
-
View
๊ฐ์ฒด๋ ์ฃผ์ด์ง ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ HTML, JSON, XML, PDF ๋ฑ ๋ค์ํ ํํ๋ก ์๋ต์ ๋ ๋๋ง ํฉ๋๋ค.
- Spring MVC์
View
๊ฐ์ฒด๋ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ค์ํ ํ
ํ๋ฆฟ ์์ง์ด๋ ์ถ๋ ฅ ํ์์ ์ง์ํฉ๋๋ค.
2๏ธโฃ View
๊ฐ์ฒด์ ์ฃผ์ ์ญํ .
-
1. ๋ชจ๋ธ ๋ฐ์ดํฐ ๋ ๋๋ง
-
View
๊ฐ์ฒด๋ ์ปจํธ๋กค๋ฌ์์ ์ ๋ฌ๋ Model
๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ๊ฐ ๋ณผ ์ ์๋ ํ์์ผ๋ก ๋ณํํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, HTML ํ
ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ์์ฑํ๊ฑฐ๋, JSON์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํด API ์๋ต์ผ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
-
2. ์๋ต ์์ฑ
- ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋ ์ต์ข
์๋ต์ ์์ฑํฉ๋๋ค.
- ์ด๋ ๋ธ๋ผ์ฐ์ ์ ํ์๋ HTML ํ์ด์ง์ผ ์๋ ์๊ณ , RESTful API์ JSON ์๋ต์ผ ์๋ ์์ต๋๋ค.
-
3. ์ปจํ
์ธ ํ์
์ค์
-
View
๊ฐ์ฒด๋ ์์ฑ๋ ์๋ต ์ปจํ
์ธ ํ์
(์: text/html
, application/json
, application/pdf
๋ฑ)์ ์ค์ ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํด์ํ ์ ์๋๋ก ํฉ๋๋ค.
3๏ธโฃ View
๊ฐ์ฒด์ ์ข
๋ฅ.
- Spring MVC์์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ํ์
View
๊ฐ์ฒด๋ฅผ ์ง์ํฉ๋๋ค.
- ์ด๋ค์ ๋ค์ํ ์๋ต ํ์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
1. JSP(JavaServer Page)
- Spring MVC์์ ๊ฐ์ฅ ์ ํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ทฐ ๊ธฐ์ ์
๋๋ค.
- JSP๋ HTML๊ณผ Java ์ฝ๋๋ฅผ ํผํฉํ์ฌ ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค.
2. Thymeleaf
- ์ต๊ทผ ๋ง์ด ์ฌ์ฉ๋๋ ํ
ํ๋ฆฟ ์์ง์ผ๋ก, HTML ํ์ผ์ ํ
ํ๋ฆฟ์ผ๋ก ์ฌ์ฉํ์ฌ, HTML ํ๊ทธ์ ํน์ํ ์์ฑ์ ์ถ๊ฐํ์ฌ ๋์ ์ธ ์ฝํ
์ธ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
3. FreeMarker
- HTML๋ฟ๋ง ์๋๋ผ ํ
์คํธ ๊ธฐ๋ฐ์ ๋ค์ํ ๋ฌธ์๋ฅผ ์์ฑํ ์ ์๋ ํ
ํ๋ฆฟ ์์ง์
๋๋ค.
4. Velocity
- Apache ํ๋ก์ ํธ์์ ์ ๊ณตํ๋ ํ
ํ๋ฆฟ ์์ง์ผ๋ก, FreeMarker์ ์ ์ฌํ๊ฒ ๋ค์ํ ํ
์คํธ ๊ธฐ๋ฐ ์๋ด์ ์์ฑํ ์ ์์ต๋๋ค.
5. JSON/XML View
-
MappingJackson2JsonView
์ ๊ฐ์ JSON ๋๋ XML ๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ JSON ๋๋ XML ํ์์ผ๋ก ๋ณํํ์ฌ RESTful API ์๋ต์ ์์ฑํ ์ ์์ต๋๋ค.
6. PDF/Excel View
-
AbstractPdfView
, AbstractXlsView
์ ๊ฐ์ ๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ PDF๋ Excel ํ์ผ์ ์์ฑํ์ฌ ์๋ต์ผ๋ก ๋ฐํํ ์ ์์ต๋๋ค.
4๏ธโฃ View
๊ฐ์ฒด ์ฌ์ฉ ์์
- ์ปจํธ๋กค๋ฌ์์
View
๊ฐ์ฒด๋ฅผ ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ ์๋ ์๊ณ , ๋ทฐ ๋ฆฌ์กธ๋ฒ(View Resolver)๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์๋ ์์ต๋๋ค.
@Controller
public class GreetingController {
@GetMapping("/greeting")
public ModelAndView greeting() {
ModelAndView mav = new ModelAndView("greeting");
mav.addObject("message", "Hello welcome to our website!");
return mav;
}
}
- ์์ ์์ ์์
ModelAndView
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ View
๋ฅผ ๋ช
์์ ์ผ๋ก ์ง์ ํ์ต๋๋ค.
-
greeting
์ด๋ผ๋ ๋ทฐ ์ด๋ฆ์ ๋ณดํต JSP๋ Thymeleaf ํ
ํ๋ฆฟ ํ์ผ๊ณผ ๋งคํ๋๋ฉฐ, ์ด ํ
ํ๋ฆฟ ํ์ผ์ด ๋ ๋๋ง ๋ฉ๋๋ค.
5๏ธโฃ ๋ทฐ ๋ฆฌ์กธ๋ฒ(View Resolver)
- Spring MVC์์ ๋ทฐ ๋ฆฌ์กธ๋ฒ(View Resolver)๋ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐํํ ๋ทฐ ์ด๋ฆ์ ์ค์
View
๊ฐ์ฒด๋ก ๋ณํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ํ
ํ๋ฆฟ ์์ง์ด๋ ๋ทฐ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๊ด๋ฆฌํ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ ์ ์ ํ
View
๊ฐ์ฒด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๋ทฐ ๋ฆฌ์กธ๋ฒ ์ค์ ์ด ์์ ์ ์์ต๋๋ค.
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
- ์ ์ค์ ์์๋ ์ปจํธ๋กค๋ฌ๊ฐ
greeting
์ด๋ผ๋ ๋ทฐ ์ด๋ฆ์ ๋ฐํํ๋ฉด, InternalResourceViewResolver
๋ /WEB-INF/views/greeting.jsp
๋ผ๋ JSP ํ์ผ์ ์ฐพ์์ ๋ ๋๋งํฉ๋๋ค.
6๏ธโฃ ์์ฝ.
-
View
๊ฐ์ฒด๋ Spring MVC์์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ์์ฑํ๊ณ ๋ ๋๋งํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ด ๊ฐ์ฒด๋ ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ข
์๋ต์ ์์ฑํ๋ฉฐ, ๋ค์ํ ํ์์ ์ถ๋ ฅ์ ์ง์ํฉ๋๋ค.
- Spring MVC๋
View
๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ๊ฑฐ๋ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ์ฌ, ํด๋ผ์ด์ธํธ์๊ฒ ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํฉ๋๋ค.