[JSP] MVC 패턴

형이·2023년 8월 22일
0

JSP

목록 보기
20/32
post-thumbnail
post-custom-banner

📝 JSP

🖥️ 1. MVP 패턴

  • M : Model
    사용자가 원하는 "데이터"나 정보를 제공
  • V : View
    보여지는 화면
  • C : Controller
    사용자가 요청을 처리하고, 그 요청에 따른 전체적인 흐름을 제어

1-1. MVC1 패턴

  • MVC1 패턴의 경우 view와 Controller를 모두 JSP가 담당하는 형태를 가진다.
  • JSP 하나로 유저의 요청을 받고 응답을 처리하므로 구현 난이도는 쉽다.
  • 단순한 프로젝트에는 괜찮겠지만 내용이 복잡하고 거대해질수록 이 패턴은 힘을 잃는다. 즉, 유지보수에 있어서 문제가 발생한다.

📝 예제

EX) mvc1.jsp

<%@ 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>


1-2. MVC2 패턴

  • MVC2 패턴은 널리 표준으로 사용되는 패턴이다.
  • 요청을 하나의 컨트롤러(Servlet)가 먼저 받는다. 즉, MVC1과는 다르게 Controller, View가 분리되어 있다.
  • 역할이 분리되어 MVC1 패턴에서의 단점을 보완할 수 있다. 그러므로 개발자는 M, V, C 중에서 수정해야할 부분이 있다면 그것만 꺼내어 수정하면 된다.
  • 유지보수에 있어서 큰 이점을 가진다.

📝 예제

EX) caos.java

package com.codingbox.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 : 요청을 제공하는 도구, 즉, 요청을 보내주는 인터페이스
		RequestDispatcher dispatcher
			= req.getRequestDispatcher("mvc/mvc2.jsp");
		dispatcher.forward(req, resp);
	}
}
EX) mvc2.jsp

<%@ 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>

post-custom-banner

0개의 댓글