MVC패턴

기혁·2023년 3월 22일

JSP 학습

목록 보기
14/19

텍스트# MVC패턴이란

  • M : Model
    -> 사용자가 원하는 데이터나 정보를 제공(db)
    -> 애플리케이션의 정보, 데이터를 나타낸다.
    -> 이러한 data 정보들의 가공을 책임지는
    컴포넌트를 말한다.
  • V : View
    -> 보여지는 화면(jsp, html)
    -> input 텍스트, 체크박스 항목 등과 같은 사용자
    인터페이스 요소를 나타낸다.
    -> 다시 말해 데이터 및 객체의 입력, 그리고
    보여주는 출력을 담당한다.
    -> 데이터를 기반으로 사용자들이 볼 수 있는
    화면이다.
  • C : Controller
    -> 사용자의 요청을 처리하고, 그 요청에 따른
    전체적인 흐름을 제어(java, jsp)
    -> 데이터와 사용자 인터페이스 요소들을
    잇는 다리역할을 한다.

MVC1 패턴

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

예시 (1)

caos.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_);
	}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% if(num%2 != 0 ) {%>
		홀수 입니다.
	<%} else { %>
		짝수 입니다.
	<%} %>
	

</body>
</html>

결과값
기본값 출력

값 7 출력

예시 (2)

caos2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
	// VIEW 부분
	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>

결과값
기본값 출력

값 9 출력

예시 (3)

CaosServlet.java

package com.codingbox.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 CaosServlet extends HttpServlet {
	
	@Override
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
	
		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 = "짝수";
		}
		
		request.setAttribute("result", result);
		RequestDispatcher dispatcher
			= request.getRequestDispatcher("caos3.jsp");
		dispatcher.forward(request, response);
	}
}

caos3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
	// VIEW 부분
// 	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>

	<%=request.getAttribute("result")  %>   <!-- 모델 부분 --> 
	

</body>
</html>

DTO(Data Transfer Object) / VO(Value Object)

  • 양쪽으로 전송되어 오고가는 데이터들을 담은 객체,
    jsp 에서는 Bean 이라고 부른다. 여러 데이터들을
    포장해서 만든 데이터 포장 객체
  • 사용자가 입력한 값을 객체 형태로 받을 수 있게
    클래스 구성
  • 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 가능
  • 하나의 데이터베이스 레코드를 저장하여 레코드와 같은
    구조를 가짐
  • 레코드가 50개면 DTO 객체도 50개
  • 한 개의 레코드는 빈즈 클래스 객체 하나로 매핑
  • 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로
    전달하는 작업을 처리하는 객체

DAO (Data Access Object)

  • 데이터에 접근, 데이터를 관리하기 위한 객체,
    데이터를 관리(추가, 수정, 삭제, 읽기)하는 여러
    메소드들이 정의되어 있다.
  • insert, delete, update, select 등 레코드 처리를 주
    목적으로 한다.
  • DTO 객체를 데이터베이스 서버에 저장
  • 데이터베이스 서버로부터 레코드를 select 한 후,
    DTO객체로 변경해 가져옴
  • SQL을 직접 실행하는 기능을 가짐
  • JSP에서 데이터 베이스 접속 로직을 Beans로 작성하여
    DB정보 변경시 쉽게 변경사항을 구현할 수 있음
  • 데이터 접근을 목적으로 하는 객체
  • 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의
    인터페이스를 사용하여 필요한 자료에 접근하도록 하는 것
  • DB를 사용해 데이터를 조회하거나 조작하는 기능을
    전담하도록 만든 오브젝트
profile
⭐️내가만든쿠키⭐️

0개의 댓글