00. ๊ธฐ๋ณธ๊ตฌ์กฐ (ํšŒ์› ๊ด€๋ฆฌ form)

์•ž์œผ๋กœ์˜ MVC ํ•™์Šต์„ ์œ„ํ•œ ์˜ˆ์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ํšŒ์›๊ด€๋ฆฌ ํผ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์•ž์œผ๋กœ ์ด ์ฝ”๋“œ๋“ค์„ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋ฉฐ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  Spring MVC ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•œ ๋ฐฐ๊ฒฝ ๋ฐ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ํŒŒ์•…ํ•˜๋ฉฐ ํ•™์Šตํ•˜๊ณ ์ž ํ•œ๋‹ค.

1๏ธโƒฃ ย  MemberFormServlet

  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฉ”์ธ ํ™”๋ฉด์ธ new-form.jsp ๋กœ ์ „์†กํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

@WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form")
public class MvcMemberFormServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String viewPath = "/WEB-INF/views/new-form.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
        dispatcher.forward(request, response);
    }
}

2๏ธโƒฃ ย  MemberSaveServlet

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ new-form.jsp ์—์„œ ์ž…๋ ฅํ•œ ๊ฐ’(username, age)์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์™€์„œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

@WebServlet(name = "mvcMemberSaveServlet", urlPatterns = "/servlet-mvc/members/save")
public class MvcMemberSaveServlet extends HttpServlet {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String username = request.getParameter("username");
        int age = Integer.parseInt(request.getParameter("age"));

        Member member = new Member(username, age);
        memberRepository.save(member);

        // Model ์—ญํ• ๋กœ request ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•œ๋‹ค.
        request.setAttribute("member", member);

        String viewPath = "/WEB-INF/views/save-result.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
        dispatcher.forward(request, response);

    }
}

3๏ธโƒฃ ย  MemberListServlet

  • ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ Member ๊ฐ์ฒด๋ฅผ ๋Œ์–ด์™€์„œ request ๊ฐ์ฒด์— ์ €์žฅํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

@WebServlet(name = "mvcMemberListServlet", urlPatterns = "/servlet-mvc/members")
public class MvcMemberListServlet extends HttpServlet {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        List<Member> members = memberRepository.findAll();

        request.setAttribute("members", members);

        String viewPath = "/ERB-INF/views/members.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
        dispatcher.forward(request,response);
    }
}