๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Spring

[์ธํ”„๋Ÿฐ - ์Šคํ”„๋ง MVC 1ํŽธ] ๋‹จ์ˆœํ•˜๊ณ  ์‹ค์šฉ์ ์ธ ์ปจํŠธ๋กค๋Ÿฌ - v4

by YeonBu 2024. 7. 30.
728x90

 

 

/* ์ด ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

   ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */

 

 

 

์Šคํ”„๋ง 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);

 

(๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ๊ฐ€์ง€๊ณ  ์™”๋‹ค)

- ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋กœ์—์„œ ์ƒ์„ฑํ•ด์„œ ๋„˜๊ฒจ์ค€๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ชจ๋ธ ๊ฐ์ฒด์— ๊ฐ’์„ ๋‹ด์œผ๋ฉด ์—ฌ๊ธฐ์— ๊ทธ๋Œ€๋กœ ๋‹ด๊ฒจ์žˆ๊ฒŒ ๋œ๋‹ค.

- ๋ทฐ์˜ ๋…ผ๋ฆฌ ์ด๋ฆ„์„ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ทฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

์ด๋ฒˆ ๋ฒ„์ „์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•˜๊ณ  ์‹ค์šฉ์ ์ด๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์˜จ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š” ๊ณผ์ •์†์—์„œ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์ด ์ˆ˜๊ณ ๋กœ์›Œ์•ผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํŽธ๋ฆฌํ•ด์ง„๋‹ค.

 

๋‹ค์Œ ๋ฒ„์ „์€ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝํ•ด๋ณด์ž

๋ฐ˜์‘ํ˜•