텍스트# MVC패턴이란
- M : Model
-> 사용자가 원하는 데이터나 정보를 제공(db)
-> 애플리케이션의 정보, 데이터를 나타낸다.
-> 이러한 data 정보들의 가공을 책임지는
컴포넌트를 말한다.- V : View
-> 보여지는 화면(jsp, html)
-> input 텍스트, 체크박스 항목 등과 같은 사용자
인터페이스 요소를 나타낸다.
-> 다시 말해 데이터 및 객체의 입력, 그리고
보여주는 출력을 담당한다.
-> 데이터를 기반으로 사용자들이 볼 수 있는
화면이다.- C : Controller
-> 사용자의 요청을 처리하고, 그 요청에 따른
전체적인 흐름을 제어(java, jsp)
-> 데이터와 사용자 인터페이스 요소들을
잇는 다리역할을 한다.
- MVC1 패턴의 경우 View와 Controller를 모두 JSP가
담당하는 형태를 가집니다. 즉 JSP 하나로 유저의 요청을
받고 응답을 처리하므로 구현 난이도는 쉽다.- 단순한 프로젝트에는 괜찮겠지만 내용이 복잡하고
거대해질수록 이 패턴은 힘을 잃습니다. 즉, 유지보수에
있어서 문제가 발생한다.
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 출력
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 출력
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>
- 양쪽으로 전송되어 오고가는 데이터들을 담은 객체,
jsp 에서는 Bean 이라고 부른다. 여러 데이터들을
포장해서 만든 데이터 포장 객체- 사용자가 입력한 값을 객체 형태로 받을 수 있게
클래스 구성- 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 가능
- 하나의 데이터베이스 레코드를 저장하여 레코드와 같은
구조를 가짐- 레코드가 50개면 DTO 객체도 50개
- 한 개의 레코드는 빈즈 클래스 객체 하나로 매핑
- 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로
전달하는 작업을 처리하는 객체
- 데이터에 접근, 데이터를 관리하기 위한 객체,
데이터를 관리(추가, 수정, 삭제, 읽기)하는 여러
메소드들이 정의되어 있다.- insert, delete, update, select 등 레코드 처리를 주
목적으로 한다.- DTO 객체를 데이터베이스 서버에 저장
- 데이터베이스 서버로부터 레코드를 select 한 후,
DTO객체로 변경해 가져옴- SQL을 직접 실행하는 기능을 가짐
- JSP에서 데이터 베이스 접속 로직을 Beans로 작성하여
DB정보 변경시 쉽게 변경사항을 구현할 수 있음- 데이터 접근을 목적으로 하는 객체
- 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의
인터페이스를 사용하여 필요한 자료에 접근하도록 하는 것- DB를 사용해 데이터를 조회하거나 조작하는 기능을
전담하도록 만든 오브젝트