Spring Model ๊ฐ์ฒด
Controller์ ๋ฉ์๋๋ Model์ด๋ผ๋ ํ์
์ ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ์ ์๋ค.
์์ํ๊ฒ JSP Servlet์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ๋ ๋ณดํต request๋ session ๋ด์ฅ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ๋ด์ jsp์ ๋๊ฒจ์ฃผ๊ณค ํ๋๋ฐ Spring์์๋ Model์ด๋ผ๋ ๋
์์ ์ด๋ค.
์ฆ request.setAttribute() ์ ๋น์ทํ ์ญํ ์ ํ๋ ๊ฒ.
request.setAttribute("time", new java.util.Date()); RequestDispatcher dispatcher = request.getRequestDispatcher("url"); dispatcher.forward(request, response);
์ ์ฝ๋๋ jsp๋ก ๊ฒ์ํ์ ๋ง๋ค๋ ๋ง์ด ์ฌ์ฉํ๋ ํํ์ ์ฝ๋์ด๋ค.
์คํ๋ง์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค.
public String home(Model model) { model.addAttribute("time", new java.util.Date()); return "home"; }
ํธ๋ฆฌํ ์ ์ ๊ฐ๋ฐ์๋ ์ง์ model์ ์์ฑํ ํ์๋ ์๋ค. ๋ค๋ง ํ๋ผ๋ฏธํฐ๋ก ์ ์ธ๋ง ํด์ฃผ๋ฉด ์คํ๋ง์ด ์์์ ๋ง๋ค์ด์ค๋ค.
์คํ๋ง MVC์ Controller๋ ๊ธฐ๋ณธ์ ์ผ๋ก Java Beans ๊ท์น์ ๋ง๋ ๊ฐ์ฒด๋ ์๋์ผ๋ก ํ๋ฉด์ ์ ๋ฌํด์ค๋ค.
Java Beans์ ๊ท์น์ ๋ง๋๋ค๋ ๊ฒ์ ๋จ์ํ ์์ฑ์๊ฐ ์๊ฑฐ๋ ๋น ์์ฑ์๋ฅผ ๊ฐ์ง๋ฉฐ, getter/setter๋ฅผ ๊ฐ์ง ํด๋์ค์ ๊ฐ์ฒด๋ค์ ์๋ฏธํ๋ค.
์ ๋ฌ๋ ๋๋ ํด๋์ค๋ช
์ ์๊ธ์๋ฅผ ์๋ฌธ์๋ก ์ฒ๋ฆฌํ์ฌ ์ ๋ฌํ๋ค.
๊ทธ๋ฌ๋ ๊ธฐ๋ณธ์๋ฃํ(int, double๋ฑ๋ฑ)์ ํ๋ผ๋ฏธํฐ๋ก ์ ์ธ๋์๋๋ผ๋ ํ๋ฉด์ ์๋์ผ๋ก ์ ๋ฌ๋์ง ์๋๋ค.
์๋ฅผ ๋ค์ด Controller์ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ์๋ค.
SampleDTO๋ String name, int age๋ฅผ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง๋ค.
@GetMapping("/ex04") public String ex04(SampleDTO dto, int page) { return "ex04" }
ex04.jsp์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณธ๋ค.
<h2>Sample DTO : ${sampleDTO}</h2> <h2>page : ${page}</h2>
๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ํตํด ์ฟผ๋ฆฌ์คํธ๋ง์ name=aaa&age=11&page=99 ์ ๊ฐ์ด ์ ๋ฌํด๋ณด๋ฉด ์ถ๋ ฅ๋๋ ๊ฒฐ๊ณผํ๋ฉด์ page๋ ๋จ์ง ์๋ ๊ฒ์ ํ์ธ.
๊ทธ๋ผ ๊ธฐ๋ณธ์๋ฃํ์ ์ด๋ป๊ฒ view์ ์ ๋ฌ์ ํด์ค๊น?
1) ํ๋ผ๋ฏธํฐ์ Modelํ์
์ ๊ฐ์ฒด๋ฅผ ์ ์ธ. ์ดํ addAttribute()๋ฅผ ํตํด ์ ๋ฌ
2) @ModelAttribute ์ด๋
ธํ
์ด์
์ฌ์ฉ
1๋ฒ์ ๊ตณ์ด ์ค๋ช
ํ์ง ์์
2๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
@GetMapping("/ex04") public String ex04(SampleDTO dto, @ModelAttribute("mypage") int page) { return "ex04" }
๊ธฐ๋ณธ์๋ฃํ์ธ ํ๋ผ๋ฏธํฐ ์์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. ์์ฑ๊ฐ์ผ๋ก๋ ํ๋ฉด์์ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ์ด๋ฆ์ ์ง์ ํด์ค๋ค.
<h2>page : ${mypage}</h2>
RedirectAttributes
RedirectAttributes ํ์
์ ๊ฐ์ฒด๋ ์ผํ์ฑ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ํ ์ ์๋ค.
response.sendRedirect()์ ๋์ผํ ์ฉ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๋ค.
addFlashAttribute() ๋ฉ์๋๋ (์ด๋ฆ, ๊ฐ)์ ํ๋ผ๋ฏธํฐ๋ก ์ด์ฉํ์ฌ ํ๋ฉด์ ๋ฑ ํ๋ฒ๋ง ์ฌ์ฉํ๊ณ ์ฆ๋ฐ(?)ํด๋ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค. ์๋ก๊ณ ์นจ์ ํ๋ฉด ๋ ๋ผ๊ฐ
addAttribute() ๋ฆฌ๋ค์ด๋ ํธํ ์ฃผ์ ๋ค์ ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ค๋ค.
Controller ๋ฉ์๋์ ๋ฆฌํดํ์
- String : jsp๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ jspํ์ผ์ ์ด๋ฆ์ ๋ํ๋
- void : ํธ์ถํ๋ URL๊ณผ ๋์ผํ ์ด๋ฆ์ jsp๋ฅผ ๋ํ๋
- VO, DTOํ์ : ์ฃผ๋ก jsonํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ ๋ฐํํ๋ ์ฉ๋
- ResponseEntity : reponseํ ๋ HTTPํค๋ ์ ๋ณด์ ๋ด์ฉ์ ๊ฐ๊ณต
- Model, ModelAndView : Model๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ฑฐ๋ ํ๋ฉด๊น์ง ์ง์
- HttpHeaders : ์๋ต์ ๋ด์ฉ์์ด HTTPํค๋ ๋ฉ์ธ์ง๋ง ์ ๋ฌํ๋ ์ฉ๋๋ก ์ฌ์ฉ
์์ฃผ ์ฌ์ฉ๋๋ void, String์ servlet-context.xml์ ViewResolver ์ค์ ๊ณผ ๋ง๋ฌผ๋ ค ์๋ํ๊ฒ ๋๋ค.
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean>
String์ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋ฉด์ ๋ณด์ฌ์ค ํ์๊ฐ ์์ ๊ฒฝ์ฐ ์ ์ฉํ๋ค. (if~else์ฒ๋ฆฌ)
String ๋ฆฌํดํ์
์์ return๋ฌธ์ ํน๋ณํ ํค์๋๋ฅผ ๋ถ์ผ ์ ์๋ค.
- redirect: ๋ฆฌ๋ค์ด๋ ํธ
- forward: ํฌ์๋ฉ(์๋ต์ ์๊ฐ ๊ธฐ๋ณธ)
'์คํ๋ง Spring > ๐งถ ์คํ๋ง ํ๋ ์์ํฌ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ํ๋ ์์ํฌ - ๋ก๊ทธ (Log4j) ๋ฐ ์ธํฐ์ ํฐ (Interceptor) ์ค์ ๋ฒ (0) | 2021.04.27 |
---|---|
์คํ๋ง ํ๋ ์์ํฌ - ๊ฐ ๋๊ธฐ๊ธฐ ๊ธฐ๋ณธ (0) | 2021.04.19 |
์คํ๋ง ํ๋ ์์ํฌ - ์ด๊ธฐ ์ธํ , ๊ฐ๋ฐ ํ๊ฒฝ์ค์ (0) | 2021.04.19 |
Spring Framework์ ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ (0) | 2021.04.19 |
Spring MVC ๊ตฌ์กฐ์ ์ฒ๋ฆฌ๊ณผ์ (0) | 2021.04.19 |
๋๊ธ