# Spring / MVC ํŒจํ„ด
Study Repository

Spring / MVC ํŒจํ„ด

by rlaehddnd0422

๊ธฐ์กด Servlet + ์ž๋ฐ”, ํ…œํ”Œ๋ฆฟ ์—”์ง„ JSP ๋ฐฉ์‹์€

(์•ž์„  ์˜ˆ์‹œ๋Š” ๋น„๊ต์  ๊ฐ„๋‹จํ•˜์ง€๋งŒ) ์Šค์ผ€์ผ์ด ์ปค์งˆ์ˆ˜๋ก ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(ํšŒ์› ๊ฐ€์ž…, ์ €์žฅ, ๋ชฉ๋ก์กฐํšŒ)๊ณผ ๋ทฐ ๋ Œ๋”๋ง(ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฒฐ๊ณผ ํ™”๋ฉด ์ œ์‹œ)๊นŒ์ง€ ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ๊ณผ JSP์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

ex) JSP ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ณ ์ณ์•ผ ํ•œ๋‹ค -> JSP๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•จ.

UI๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค -> JSP๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•จ.

 

ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌ -> ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€.

 

ํŠนํžˆ JSP ๊ฐ™์€ ๋ทฐ ํ…œํ”Œ๋ฆฟ์€ ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ์ตœ์ ํ™” ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— JSP๋Š” ์ด ๋ถ€๋ถ„์˜ ์—…๋ฌด๋งŒ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

MVC(Model View Controller) ํŒจํ„ด

  • Controller : HTTP ์š”์ฒญ์„ ๋ฐ›์Œ - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰ - ๋ทฐ์— ์ „๋‹ฌํ•  ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ ๋ชจ๋ธ์— ๋‹ด์Œ
  • Model : View์— ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ. ๋ชจ๋ธ ๋•๋ถ„์— ๋ทฐ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋ชฐ๋ผ๋„ ๋จ
  • View : ๋ชจ๋ธ์— ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ผ์— ์ง‘์ค‘.

MVC ํŒจํ„ด์€ ์ง€๊ธˆ๊นŒ์ง€ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ JSP๋‚˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋˜ ๊ฒƒ์„ Controller ์™€ View๋กœ ์˜์—ญ์„ ๋‚˜๋ˆˆ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

MVC ํŒจํ„ด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ„ด 1. M-VC

 

MVC 1

 

1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ(JSP) ํ˜ธ์ถœ.

2. ์ปจํŠธ๋กค๋Ÿฌ(JSP)์—์„œ ํ•ด๋‹น ์š”์ฒญ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด ๋ทฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ 

3. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ ๊ฒฝ์šฐ Service, Repository ๊ณ„์ธต์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ˜ธ์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ํ•œ ํ›„ ๋กœ์ง ์ˆ˜ํ–‰ ํ›„ Model์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ.

4. View(JSP) ์—์„œ Model์— ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต.

 

ํŠน์ง•

  • ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์ด ํ•ฉ์ณ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MVC 1์—์„œ๋Š” JSP๊ฐ€ View์™€ Controller์˜ ์—ญํ• ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋˜๋ฉด JSP์— ์ž๋ฐ”์ฝ”๋“œ, html ์ฝ”๋“œ, css ๋“ฑ์˜ ์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ์žˆ์–ด ์†Œ์Šค๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ค์›Œ์ ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ์„ค๊ณ„๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์ž‘์€ ํ”„๋กœ์ ํŠธ์— ๊ฐœ๋ฐœ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํŒจํ„ด 2 M-V-C

MVC 2

1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ(Servlet) ํ˜ธ์ถœ.

2. ์ปจํŠธ๋กค๋Ÿฌ(Servet)์—์„œ ํ•ด๋‹น ์š”์ฒญ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด ๋ทฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ 

3. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ ๊ฒฝ์šฐ Service, Repository ๊ณ„์ธต์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ˜ธ์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ํ•œ ํ›„ ๋กœ์ง ์ˆ˜ํ–‰ ํ›„ Model์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ.

4. View(JSP) ์—์„œ Model์— ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต.

 

ํŠน์ง•

  • Servlet๊ณผ JSP๊ฐ€ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ์„ž์ผ ์ผ์ด ์—†์Œ.
  • HTML๊ณผ Java์ฝ”๋“œ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ํ™•์žฅ์— ์šฉ์ด. ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค.
  • ์„ค๊ณ„๋‹จ๊ณ„์— ๋น„์šฉ์ด ๋งŽ์ด๋“ค์–ด ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. 

MVC ํŒจํ„ด ์ ์šฉ

Servlet์„ Controller๋กœ, JSP๋ฅผ View๋กœ ์‚ฌ์šฉํ•ด์„œ MVCํŒจํ„ด์„ ์ ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Model์€ HttpServletRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(request๋Š” ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— request.setAttribute(), request.getAttribute()๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

 

ํšŒ์› ๋“ฑ๋ก ํผ - ์ปจํŠธ๋กค๋Ÿฌ

package hello.servlet.web.servletmvc;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@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);
    }
}

 

  • dispatcher.forward() : ๋‹ค๋ฅธ Servlet์ด๋‚˜ JSP๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ์ด ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์™€ ๋‹ฌ๋ฆฌ ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • /WEB-INT : ์ด ๊ฒฝ๋กœ ์•ˆ์— JSP๊ฐ€ ์žˆ์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•œ ์™ธ๋ถ€์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์ง ์ปจํŠธ๋กค๋Ÿฌ(Servlet)์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( ์˜ค์ง /servlet-mvc/members/new-form ์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

 

ํšŒ์› ๋“ฑ๋ก ํผ - ๋ทฐ

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- ์ƒ๋Œ€๊ฒฝ๋กœ ์‚ฌ์šฉ, [ํ˜„์žฌ URL์ด ์†ํ•œ ๊ณ„์ธต ๊ฒฝ๋กœ + /save] -->
<form action="save" method="post">
    username: <input type="text" name="username" />
    age: <input type="text" name="age" />
    <button type="submit">์ „์†ก</button>
</form>
</body>
</html>

์—ฌ๊ธฐ์„œ form์˜ action์„ ๋ณด๋ฉด ์ ˆ๋Œ€ ๊ฒฝ๋กœ( / ๋กœ ์‹œ์ž‘)๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒ๋Œ€๊ฒฝ๋กœ( / ๋กœ ์‹œ์ž‘X)์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํผ ์ „์†ก์‹œ ํ˜„์žฌ URL์ด ์†ํ•œ ๊ณ„์ธต ๊ฒฝ๋กœ + save๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ณ„์ธต ๊ฒฝ๋กœ: /servlet-mvc/members/
๊ฒฐ๊ณผ: /servlet-mvc/members/save

 

๋“ฑ๋ก ํผ์—์„œ๋Š” ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„ ๊ฒŒ ์—†์Šต๋‹ˆ๋‹ค. ํšŒ์› ์ €์žฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํšŒ์› ์ €์žฅ - ์ปจํŠธ๋กค๋Ÿฌ

package hello.servlet.web.servletmvc;

import hello.servlet.basic.domain.member.Member;
import hello.servlet.basic.domain.member.MemberRepository;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@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);

        request.setAttribute("member",member);

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

    }
}

 

์„œ๋ธ”๋ฆฟ๋ฐฉ์‹๊ณผ JSP ๋ฐฉ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ /servlet-mvc/members/save์— POST๋œ username๊ณผ age ์ •๋ณด๋กœ ๋„๋ฉ”์ธ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

 

Model(HttpServletRequest)์— ๋„๋ฉ”์ธ์„ ์ €์žฅ ํ›„ -> view๋กœ ์ด๋™

 

ํšŒ์› ์ €์žฅ - ๋ทฐ

<%@ page import="hello.servlet.basic.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
์„ฑ๊ณต
<ul>
<%--    <li>id=<%=((Member)request.getAttribute("member")).getId()%></li>--%>
<%--    <li>username=<%=((Member)request.getAttribute("member")).getUsername()%></li>--%>
<%--    <li>age=<%=((Member)request.getAttribute("member")).getAge()%></li>--%>

    <li>id=${member.id}</li>
    <li>username=${member.username}</li>
    <li>age=${member.age}</li>
</ul>
<a href="/index.html">๋ฉ”์ธ</a>
</body>
</html>

 

request.getAttribute("ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„")์„ ํ†ตํ•ด Model์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Member๋กœ ์บ์ŠคํŒ…ํ•˜๋ฉฐ getterํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹๋„ ์žˆ์ง€๋งŒ,

JSP๋Š” ${} ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด request์˜ attribute์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํšŒ์› ๋ชฉ๋ก์„ ์กฐํšŒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ - ์ปจํŠธ๋กค๋Ÿฌ

package hello.servlet.web.servletmvc;

import hello.servlet.basic.domain.member.Member;
import hello.servlet.basic.domain.member.MemberRepository;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@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 = "/WEB-INF/views/members.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
        dispatcher.forward(request,response);
    }
}

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ request ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ List๋ฅผ ๋ชจ๋ธ์— ๋ณด๊ด€ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ - ๋ทฐ

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/index.html">๋ฉ”์ธ</a>
<table>
    <thead>
    <th>id</th>
    <th>username</th>
    <th>age</th>
    </thead>
    <tbody>
    <c:forEach var="item" items="${members}">
        <tr>
            <td>${item.id}</td>
            <td>${item.username}</td>
            <td>${item.age}</td>
        </tr>
    </c:forEach>
    </tbody>
</table>
</body>
</html>

 

๋ชจ๋ธ์— ๋‹ด์•„๋‘” members๋ฅผ JSP๊ฐ€ ์ œ๊ณตํ•˜๋Š” taglib๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ถœ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

members ๋ฆฌ์ŠคํŠธ์—์„œ member๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๊บผ๋‚ด item ๋ณ€์ˆ˜์— ๋‹ด๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

 

<c:forEach> ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
      for (Member member : members) {
          	out.write("    <tr>");
            out.write("
            out.write("
            out.write("
            out.write("    </tr>");
            <td>" + member.getId() + "</td>");
            <td>" + member.getUsername() + "</td>");
            <td>" + member.getAge() + "</td>");
            }
%>
  • JSP์—์„œ ์ผ๋˜ ์˜ˆ์•ฝ์–ด out์„ ์‚ฌ์šฉํ•ด ์ถœ๋ ฅํ•ด๋„ ๋˜๊ธด ํ•˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋น„๊ต์  ์ง€์ €๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • JSP๊ฐ™์€ ๋ทฐํ…œํ”Œ๋ฆฟ์€ ์ด๋ ‡๊ฒŒ ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํŠนํ™”๋œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

MVC ํŒจํ„ด์˜ ์žฅ์ 

  • ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ๊ณผ ๋ทฐ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ทฐ๋Š” ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์— ์ถฉ์‹คํ•œ ๋•๋ถ„์— ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ณ  ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” ์ค‘๋ณต๋œ ์ฝ”๋“œ๊ฐ€ ๋งŽ๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ (ex. response)๋“ค๋„ ๋งŽ์ด ๋ณด์ž…๋‹ˆ๋‹ค.


MVC ํŒจํ„ด์˜ ํ•œ๊ณ„

์ค‘๋ณต ์ฝ”๋“œ

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

๊ณตํ†ต ์ฒ˜๋ฆฌ์˜ ์–ด๋ ค์›€

  • ๊ธฐ๋Šฅ์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ณตํ†ต์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„๋“ค์ด ์ ์  ๋” ๋งŽ์•„์ง‘๋‹ˆ๋‹ค. ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ฝ‘์œผ๋ฉด ๋˜๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ํ•ญ์ƒ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๊ณ , ๋˜ ํ˜ธ์ถœํ•˜๋Š”๊ฒƒ ์ž์ฒด๋„ ์—ฌ๋Ÿฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋‹ˆ ์ค‘๋ณต๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

<์ฐธ๊ณ ์ž๋ฃŒ>

https://onejuny.tistory.com/entry/JavaJsp-MVC-1-MVC-2-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90

 

[Java/Jsp] MVC 1, MVC 2 ์ฐจ์ด ๋ฐ ์žฅ๋‹จ์ 

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด MVC ํŒจํ„ด์ด๋ผ๋Š” ๋ง์„ ์ž์ฃผ ๋“ฃ๊ฒŒ ๋œ๋‹ค. ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ์‚ฌ๋žŒ์ด๋‚˜, ํ˜„์—…์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋‚˜ MVC ํŒจํ„ด์€ ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. MVC ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€? MVC ํŒจํ„ด์€

onejuny.tistory.com

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., -

www.inflearn.com

https://cocoon1787.tistory.com/733

 

[๊ฐœ๋ฐœ์ƒ์‹] MVC ํŒจํ„ด์ด๋ž€? (Model-View-Controller)

๐Ÿš€ ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์—์„œ ์ž์ฃผ ๋‚˜์˜ค๋Š” ์งˆ๋ฌธ ์ค‘์˜ ํ•˜๋‚˜์ธ "MVCํŒจํ„ด"์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. MVCํŒจํ„ด์˜ ์˜๋ฏธ์™€ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ , ์‚ฌ์šฉ ์˜ˆ์‹œ ๋“ฑ๋“ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ก MVC ํŒจํ„ด์ด๋ž€?

cocoon1787.tistory.com

 

'๐Ÿ“• Java&Spring > MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Adapter ํŒจํ„ด  (0) 2023.03.02
Front-Controller ํŒจํ„ด  (0) 2023.02.27
Spring / ์ˆœ์ˆ˜ Servlet ํŒจํ„ด, JSP ํŒจํ„ด  (0) 2023.02.23
Spring MVC / HttpServletResponse  (0) 2023.02.22
Spring MVC / HttpServletRequest  (0) 2023.02.22

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ