사용자의 요청
이 정적 페이지
라면 컨트롤러
에서 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>