/* ์ด ๊ธ์ ๊น์ํ๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ๋ ค๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์ฌ๋ฆฌ๋ ๊ธ์ด๋ฏ๋ก ์ค๊ฐ ์ค๊ฐ ์ฝ๋๋ ์๋ต๋์์ต๋๋ค. */
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ ๊ฐ์ | ๊น์ํ - ์ธํ๋ฐ
๊น์ํ | ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต
www.inflearn.com
1. V4์ ๊ตฌ์กฐ
- ์์ ๋ง๋ v3 ์ปจํธ๋กค๋ฌ๋ ์๋ธ๋ฆฟ ์ข ์์ฑ์ ์ ๊ฑฐํ๊ณ ๋ทฐ ๊ฒฝ๋ก์ ์ค๋ณต์ ์ ๊ฑฐํ๋ ๋ฑ ์ ์ค๊ณ๋ ์ปจํธ๋กค๋ฌ์ง๋ง, ์ค์ ์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ณด๋ฉด ํญ์ ModelView ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐํํด์ผ ํ๋ ๋ถ๋ถ์ด ๋ฒ๊ฑฐ๋กญ๋ค.
- ์ข์ ํ๋ ์์ํฌ๋ ์ํคํ ์ฒ๋ ์ค์ํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ๋จ์ํ๊ณ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ด์ผํ๋ค.
- ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ V3๊ณผ ๊ฐ์ง๋ง ์ปจํธ๋กค๋ฌ๊ฐ ModelView๋ฅผ ๋ฐํํ์ง ์๊ณ Viewname๋ง ๋ฐํํ๋ค.
2. ๊ตฌํ
ControllerV4
public interface ControllerV4 {
String process(Map<String, String> paramMap, Map<String, Object> model);
}
- ์ด๋ฒ ๋ฒ์ ์ ์ธํฐํ์ด์ค์ ModelView๊ฐ ์๋ค. model์ ๊ฐ์ฒด๋ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ์ฌ์ฉํ๋ฉด๋๊ณ , ๊ฒฐ๊ณผ๋ก ๋ทฐ์ ์ด๋ฆ๋ง ๋ฐํํด์ฃผ๋ฉด ๋๋ค.
MemberFormControllerV4
public class MemberFormControllerV4 implements ControllerV4 {
@Override
public String process(Map<String, String> paramMap, Map<String, Object> model) {
return "new-form";
}
}
- ์ ๋ง ๋จ์ํ๊ฒ 'new-form'์ด๋ผ๋ ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ๋ง ๋ฐํํ๋ฉด ๋๋ค.
MemberSaveControllerV4
public class MemberSaveControllerV4 implements ControllerV4 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
public String process(Map<String, String> paramMap, Map<String, Object> model) {
String username = paramMap.get("username");
int age = Integer.parseInt(paramMap.get("age"));
Member member = new Member(username, age);
memberRepository.save(member);
model.put("member", member);
return "save-result";
}
}
MemberListControllerV4
public class MemberListControllerV4 implements ControllerV4 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
public String process(Map<String, String> paramMap, Map<String, Object> model) {
List<Member> members = memberRepository.findAll();
model.put("members", members);
return "members";
}
}
- ๋ชจ๋ธ์ด ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ง์ ๋ชจ๋ธ์ ์์ฑํ์ง ์์๋ ๋๋ค.
FrontControllerServletV4
//paramMap
Map<String, String> paramMap = createParamMap(request);
Map<String, Object> model = new HashMap<>(); // ์ถ๊ฐ
String viewName = controller.process(paramMap, model);
MyView view = viewResolver(viewName);
view.render(model, request, response);
(๋ฐ๋ ๋ถ๋ถ๋ง ๊ฐ์ง๊ณ ์๋ค)
- ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ํ๋ก ํธ ์ปจํธ๋กค๋ก์์ ์์ฑํด์ ๋๊ฒจ์ค๋ค. ์ปจํธ๋กค๋ฌ์์ ๋ชจ๋ธ ๊ฐ์ฒด์ ๊ฐ์ ๋ด์ผ๋ฉด ์ฌ๊ธฐ์ ๊ทธ๋๋ก ๋ด๊ฒจ์๊ฒ ๋๋ค.
- ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ์ง์ ๋ฐํํ๋ฏ๋ก ์ด ๊ฐ์ ์ฌ์ฉํด์ ์ค์ ๋ฌผ๋ฆฌ ๋ทฐ๋ฅผ ์ฐพ์ ์ ์๋ค.
์ด๋ฒ ๋ฒ์ ์ ์ปจํธ๋กค๋ฌ๋ ๋งค์ฐ ๋จ์ํ๊ณ ์ค์ฉ์ ์ด๋ค.
์ฌ๊ธฐ๊น์ง ํ ๋ฒ์ ์จ ๊ฒ์ด ์๋๋ผ ํ๋ ์์ํฌ๊ฐ ์ ์ง์ ์ผ๋ก ๋ฐ์ ํ๋ ๊ณผ์ ์์์ ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์๋ ๊ฒ์ด๋ค.
ํ๋ ์์ํฌ๋ ๊ณตํต ๊ธฐ๋ฅ์ด ์๊ณ ๋ก์์ผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ํธ๋ฆฌํด์ง๋ค.
๋ค์ ๋ฒ์ ์ ์ด๋ํฐ ํจํด์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ฐฉ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ณ๊ฒฝํด๋ณด์
'IT > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ - ์คํ๋ง MVC 1ํธ] ์ ์ฐํ ์ปจํธ๋กค๋ฌ - v5 (0) | 2024.08.07 |
---|---|
[์ธํ๋ฐ - ์คํ๋ง MVC 1ํธ] model ์ถ๊ฐ - v3 (0) | 2024.07.30 |
[์ธํ๋ฐ - ์คํ๋ง MVC 1ํธ] view ๋ถ๋ฆฌ - v2 (1) | 2024.06.14 |
[์ธํ๋ฐ - ์คํ๋ง MVC 1ํธ] ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ๋์ - v1 (0) | 2024.06.12 |
[์ธํ๋ฐ - ์คํ๋ง MVC 1ํธ] MVC๋ก ํ์ ๊ด๋ฆฌ ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ (0) | 2024.05.25 |