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
1. ํด๋ผ์ด์ธํธ์์ ์ปจํธ๋กค๋ฌ(JSP) ํธ์ถ.
2. ์ปจํธ๋กค๋ฌ(JSP)์์ ํด๋น ์์ฒญ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ๋ฉด ๋ทฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
3. ๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถํ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ ๊ฒฝ์ฐ Service, Repository ๊ณ์ธต์์ ๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถ ๋ฐ ๋ฐ์ดํฐ ์ ๊ทผ์ ํ ํ ๋ก์ง ์ํ ํ Model์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ.
4. View(JSP) ์์ Model์ ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋์ ๋ฆฌ์์ค ์ ๊ณต.
ํน์ง
- ๋ทฐ์ ์ปจํธ๋กค๋ฌ์ ์ญํ ์ด ํฉ์ณ์ ธ ์์ต๋๋ค.
- MVC 1์์๋ JSP๊ฐ View์ Controller์ ์ญํ ์ ๋ชจ๋ ์ํํฉ๋๋ค.
- ์ด๋ ๊ฒ ๋๋ฉด JSP์ ์๋ฐ์ฝ๋, html ์ฝ๋, css ๋ฑ์ ์ฝ๋๊ฐ ์์ฌ์์ด ์์ค๊ฐ ๋ณต์กํ๊ณ ์ฝ๊ธฐ ์ด๋ ค์์ ธ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋๋ค.
- ํ์ง๋ง ์๋์ ์ผ๋ก ์ค๊ณ๊ฐ ๊ฐ๋จํ๊ณ ์์ ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ ์ด ์์ต๋๋ค.
ํจํด 2 M-V-C
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);
๊ณตํต ์ฒ๋ฆฌ์ ์ด๋ ค์
- ๊ธฐ๋ฅ์ด ๋ณต์กํด์ง์๋ก ์ปจํธ๋กค๋ฌ์์ ๊ณตํต์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ๋ถ๋ถ๋ค์ด ์ ์ ๋ ๋ง์์ง๋๋ค. ๊ณตํต ๊ธฐ๋ฅ์ ๋ฉ์๋๋ก ๋ฝ์ผ๋ฉด ๋๊ฒ ์ง๋ง, ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๋น ๋ฉ์๋๋ฅผ ํญ์ ํธ์ถํด์ผ ํ๊ณ , ๋ ํธ์ถํ๋๊ฒ ์์ฒด๋ ์ฌ๋ฌ ์ปจํธ๋กค๋ฌ์์ ์ํํด์ผ ํ๋ ์ค๋ณต๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋จผ์ ์ปจํธ๋กค๋ฌ์์ ๊ณตํต ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ด ์์ต๋๋ค.
- ๋ค์ ํฌ์คํ ์์๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
<์ฐธ๊ณ ์๋ฃ>
[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
'๐ Backend > MVC Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
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