간단한 Stream 사용서
#JSP MVC model
##MVC model1 - 일반적인 JSP프로그래머가 구현하는 코드
- 다음은 MVC 적용 이전의 JSP 파일 코드 중 일부이다.
/*----- 입력코드 ------*/ <% String num_ = request.getParameter("n"); %> /*------ 출력코드 ------*/ ......... ........ .... <% if(num%2 !=0){ %> 홀수입니다. <% } else { %> 짝수입니다. <%}%>
- 입력 부분과 출력부분이 떨어져 있어 코드가 길어질 수록 복잡해짐.
- 이 코드를 다음과 같이 정리할 수 있다.
/*----- 입력코드 ------*/ <% String num_ = request.getParameter("n"); if(num%2 !=0) model="홀수"; else model="짝수"; %> /*------ 출력코드 ------*/ ......... ........ .... <% =model%>
- 이전 코드에서는 출력부분에서 코드를 직접 통제하기 때문에 입출력코드간의 연관성이 눈에 확 띄기 힘들다. 이는 코드가 길어질 수록 읽기조차 힘들어지게하는 요인이 될 수 있다.
- 반면 위의 코드는 model 이라는 변수를 입력부분에 만들어 놓고 출력부분에 꽂아 넣기만하는 구조로 이루어져 보다 간단하게 구조를 만들 수 있다. 코드 블럭 자체의 크기는 커지겠지만 코드 블럭의 개수가 적어져 간단해 보인다.
- 이렇게 입력과 제어를 담당하는 코드(자바)를 C ontroller, 출력을 담당하는 코드(HTML)를 V iew라고 부르며 이 두 코드 블럭을 이어주는 역할을 Model이 하게 된다.
- 이러한 구조를 갖는 JSP 코드 구조를 MVC라고 하는 것.
MVC model2
- model1에서는 자바코드와 HTML코드를 분리하고 model을 통해 연결되었다.
- 하지만 model1은 여전히 한 파일한에서 코드문이 분리되어 있는 상태이다.
- 자바코드와 HTML이 한 파일에 있는 것도 작동은 하나 유지보수적 측면에서 이 둘을 분리해 각각의 파일로서 다루는 것이 더 바람직해 보인다. 따라서 컨트롤러와 뷰가 물리적으로 분리된 방식을 도입한 구조가 MVC model2이다.
- 그러면 컨트롤러와 뷰를 분리하는 것까지는 단순히 파일만 만들어서 복붙만 하면 된다.
- 하지만 이 둘을 어떻게 연결할 것인가하는 문제가 발생한다. 이전처럼 파일 내에서 model이라는 변수로만 연결하기에는 다른 파일이라는 점에서 한계가 있다.
- 이러한 역할을 forwatding이라고 부르며 Dispatcher라고 것이 이를 수행한다.
- 프로그램이 완성되고 서비스가 커질 수록 웹 어플리케이션에서 클라이언트가 요청하는 페이지가 늘어나게 된다. 이는 곧 즉 준비할 url 페이지가 많아져 컨트롤러(자바 클래스파일)&뷰(JSP파일)이 더 필요하다는 의미.
- 여기서 디스패쳐는 클라이언트의 request를 받아 각 요청에 맞는 컨트롤러와 연결해주고, 컨트롤러의 response(return된 어떤 결과값과 함께)를 받아 JSP파일과 함께 VIEW를 클라이언트에서 반환해준다.
댓글남기기