Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

wintertreey 님의 블로그

MVC패턴 본문

JSP

MVC패턴

wintertreey 2024. 7. 1. 13:00

MVC 패턴

MVC패턴은 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나.
클라이언트 요청이 들어오면 사용자 인터페이스와 비즈니스 로직을 분리하여 각각의 로직을 독립적으로 운용하여 유지보수를 용이하게 만들 수 있는 디자인 패턴이다.

 

디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다.

 

MVC 구성요소

M (Model)

Model은 내부 비즈니스 로직에 해당
즉, 백그라운드 로직으로써 처리되는 알고리즘, 데이터, DB와의 상호작용 등등을 담당

 

V (View)

View는 사용자 인터페이스(UI)를 의미
요청에 대한 처리결과를 View를 통해 클라이언트에게 화면을 통해 보여준다.

 

C (Controller)

Controller는 Model과 View사이에서 중계자 역할을 수행하며, 클라이언트의 요청을 처리하고 흐름제어를 담당.

 

 

MVC Model1

 

MVC Model1은 View와 Controller를 JSP에서 모두 구현하는 구조를 가지고 있다.

 

따라서 클라이언트의 요청을 받는것도 JSP, Model과 상호작용을 하여 변경된 Model을 사용하여 View를 다시 그려내는것도 JSP. 즉, 사용자의 요청처리와 요청에 대한 응답처리를 JSP에서 모두 구현하는 구조이다. 

 

위의 특징때문에 MVC Model1구조는 흐름이 단순하기 때문에 개발이 쉽고 중소형 프로젝트에 적합하다는 장점이 있다. 하지만 프로젝트의 규모가 커질수록 유지보수가 어려워지고, View와 Controller가 하나의 JSP에 합쳐져 있기때문에 디자이너와 개발자의 협업에 어려움이 생길 수 있다.

 

MVC Model2

MVC Model2는 MVC Model1과는 다르게 View와 Controller가 분리된 구조를 가지고 있다.
클라이언트의 요청을 처리, 흐름제어를 하면서 필요시 Model과 상호작용을 하는 Controller는 Servlet에서 담당하고, 사용자 인터페이스를 보여주는 View는 JSP에서 담당하고 있다.
이렇게 Controller와 View를 분리함으로써 클라이언트의 요청처리 부분과 응답처리 부분을 분리하여 각 로직을 독립적으로 수행할 수 있다.

따라서 유지보수 측면에서 매우 좋고 디자이너와 개발자간의 협력이 수월하다는 장점이 있다. 하지만 MVC Model1보다 프로그램의 흐름이 복잡하기 때문에 개발 난이도가 높으며, 설계에서 어려움을 겪을 수 있다는 단점이 있다.

 

 

Model1,2 방식의차이 (정리)

 

1) 클라이언트의 요청처리와 응답처리가 분리되어있는가

model1 요청처리와 응답처리가 모두 하나의 JSP에서 이루어진다.

model2 요청처리는 Servlet에서 담당하고 응답처리는 JSP에서 이루어진다.

 

2) 접근방식

Model1은 View와 Controller가 하나의 JSP에 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있다

Model2에서 클라이언트는 View에 직접적으로 접근할 수 없고 반드시 Controller를 통해서 접근해야 한다.

 

 


연습 

MVC 패턴 연습<br>
자료 입력<br>
<form action="GoMvc" method="post">
	이름: <input type="text" name="name" value="korea"> 
	<input type="submit">
</form>
<br>
<a href= "GoMvc">get 요청1</a><br>
<a href= "GoMvc?name=korea">get 요청2</a><br>
<a href= "GoMvc?name=tom">get 요청3</a><br>

 

@WebServlet("/GoMvc")
public class GoMvc extends HttpServlet { //Controller역할
	private static final long serialVersionUID = 1L;

	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		
		String result= "", viewName="/WEB-INF/";
		String name;
		
		try {
			name= request.getParameter("name");
		} catch (Exception e) {
			name=null;
		}
		
		//클라이언트 요청을 받아 분석(판단): 모델과 뷰를 선택하는 기능 기술
		if(name==null || name.equals("")) {
			result = "환영합니다"; //Model(Business logic)을 수행한 결과라 가정
			viewName += "views/view1.jsp";
		}else if(name.equals("korea")) {
			result =  "한국인이시군요";
			viewName += "views/view2.jsp";
		}else {
			result = name+ "님 반갑습니다";
			viewName += "views/view3.jsp";
		}
		
		request.setAttribute("result", result);
		RequestDispatcher dispatcher = request.getRequestDispatcher(viewName);
		dispatcher.forward(request, response);
	}

 

view1.jsp
view2.jsp
view3. jsp


https://cafe.daum.net/flowlife/HqLp/46

 

 

MVC 개요 ppt

MVC개요.pptx93.47KB   

cafe.daum.net

 

https://velog.io/@ovan/MVC-Model1%EA%B3%BC-MVC-Model2

 

MVC Model1과 MVC Model2

MVC패턴은 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나입니다.MVC패턴은 사용자 인터페이스와 비즈니스 로직을 분리하여 각각의 로직을 독립적으로 운용하여 유지보수를 용이하게 만들

velog.io

https://m.blog.naver.com/jhc9639/220967034588

 

[개발자 면접준비]#1. MVC패턴이란

오늘은 개발자면접에 많이 나오기도 하는 MVC패턴에 대해서 알아보고자 합니다. 과연 MVC패턴이 무엇...

blog.naver.com

 

'JSP' 카테고리의 다른 글

Redirect 리다이렉트 vs Forward 포워드 방식  (0) 2024.07.02
MVC Model2: DB 연동하기  (0) 2024.07.02
MVC Model2: 인터페이스를 사용한 Controller  (0) 2024.07.01
빌드 관리 도구 maven gradle  (0) 2024.07.01
EL  (0) 2024.07.01