사용자의 요청이 정적 페이지라면 컨트롤러에서 View 단 반환,동적 페이지라면 Model(DB)단으로 요청을 넘긴다.컨트롤러에서 먼저 요청을 받아서 DB 데이터가 필요한지 판단한다.정적페이지라면, Model 갈 필요 없이 View 단에서 사용자에게 바로 응답을 보낸다.동적페이지라면, 컨트롤러가 요청을 받아서 Model에 요청을 한다.data를 받아온다.data 값을 view 단을 통해 사용자에게 응답한다.!간단하게 용어설명!
Controller는 사용자의 요청을 가장 먼저 받으며, 컨트롤러의 역할을 하는 자바파일을 의미한다.Model 은 DB 커넥션을 맺고, Query문을 날리는 자바파일을 의미한다.MVC1 패턴의 경우 View 와 Controller를 모두 JSP가 담당하는 형태를 가진다.JSP 하나로 유저의 요청을 받고, 응답을 처리하므로 구현의 난이도는 쉽다.<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% int num = 0; String num_ = request.getParameter("num"); if(num_ != null && !num_.equals("")){ num = Integer.parseInt(num_); } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%if(num % 2 != 0){ %> 홀수입니다. <%}else {%> 짝수입니다. <%} %> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <% int num = 0; String num_ = request.getParameter("num"); if(num_ != null && !num_.equals("")){ num = Integer.parseInt(num_); } String result = ""; if(num %2 != 0){ result = "홀수"; }else{ result = "짝수"; } %> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%=result %>입니다. </body> </html>

html 윗 부분이 요청을 가장 먼저 받는 부분인 Controller 이고
html 부분이 View 단으로 jsp파일에서 Controller와 View단을 같이 처리한다.

결과값, 데이터를 나타내는 Model 영역이다.
예시코드보다 직관성이 높고, 가독성이 높아졌다.
Servlet영역 .java 파일로 분리된다.Controller에서 바로 View단으로 응답한다.Model 영역으로 요청한다.
- 예시코드
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% int num = 0; String num_ = request.getParameter("num"); if(num_ != null && !num_.equals("")){ num = Integer.parseInt(num_); } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%if(num % 2 != 0){ %> 홀수입니다. <%}else {%> 짝수입니다. <%} %> </body> </html>
- html 태그 아래부분이 View단이다. view단에서 판단을 하는 로직을 포함하고 있는데, 이러한 경우가 유지보수가 힘든 경우이다.
- Caos.java
package com.koit.web.servlet; import java.io.IOException; 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; @WebServlet("/caos") public class Caos extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int num = 0; String num_ = req.getParameter("num"); if(num_ != null && !num_.equals("")){ num = Integer.parseInt(num_); } String result = ""; if(num %2 != 0){ result = "홀수"; }else{ result = "짝수"; } req.setAttribute("result", result); RequestDispatcher dispatcher = req.getRequestDispatcher("mvc/mvc2.jsp"); dispatcher.forward(req, resp); } }
컨트롤러의 역할을 하는 파일이 자바파일이면 MVC2 패턴이다.forward 방식으로 페이지 이동하려면 RequestDispatcher 객체가 필요하다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%=request.getAttribute("result") %> 입니다. </body> </html>