상세 컨텐츠

본문 제목

Spring MVC의 특징

IT 세상/자바세상

by 이현민 (지후지율아빠) 2009. 1. 28. 12:35

본문

Spring MVC의 특징
Spring의 웹 모듈은 다음을 포함하는 유일한 웹 지원의 가치를 제공한다.

역할의 분명한 분리 - 컨트롤러, 유효성 체커, 커맨드 객체, 폼 객체, 모델 객체, DispatcherServlet, 핸들러 맵핑, view분석자, 등등. 각각의 역할은 객체를 특수화된 객체에 의해 충족될수 있다.

 

프레임워크와 자바빈즈같은 애플리케이션 클래스의 강력하고 일관적인 설정, 웹 컨트롤러에서 비지니스 객체와 유효성 체커와 같은 컨텍스트를 통한 쉬운 참조를 포함한다.

 

적합성, 침범적이지 않은, 모든것을 위해 하나의 컨트롤러로 부터 유도되는 대신에 주어진 시나리오를 위해 필요한(plain, 커맨드, 폼, 마법사, 다중 액션, 또는 사용자지정의 것) 컨트롤러 하위 클래스가 무엇이든지 사용하라.

 

재사용가능한 비지니스 코드 - 중복을 위해 필요한 것이 없다. 당신은 특정 프레임워크 기본 클래스를 확장하기 위해 그것들을 반영하는 대신에 커맨드 폼객체처럼 존재하는 비지니스 객체를 사용할수 있다.

 

사용자 지정 가능한 바인딩과 유효성 체크 - 수동 파싱과 비지니스 객체로 변환하는 오직 문자열만을 사용하는 폼 객체 대신에 잘못된 값, 지역화된 날짜 그리고 숫자 바인딩, 등등 을 유지하는 애플리케이션 레벨의 유효성 에러처럼 타입 부적합

 

사용자 지정가능한 핸들러 맵핑과 view분석 - 핸들러 맵핑과 view분석 전략은 간단한 URL기반의 설정에서 정교한, 목적이 내포된 분석 전략까지 범위에 둔다. 이것은 특정 기술을 위임하는 몇몇 웹 MVC프레임워크 보다 좀더 유연하다.

 

유연한 모델 이전 - 모델은 어떠한 view기술과 함께 쉬운 통합을 지원하는 이름/값 Map을 통해 이전한다.

 

사용자 지정 가능한 로케일과 테마 분석, Spring 태그 라이브러리를 사용하거나 사용하지 않은 JSP를 위한 지원, JSTL을 위한 지원, 추가적인 연결자를 위한 필요성없이 Velocity를 위한 지원

 

어떠한 가격적인 면에서 HTML생성을 피하는 간단하지만 강력한 태그 라이브러리, 마크업의 개념에서 최대한의 유연성을 허락한다.




----------------------------------example--------------------------------------------

Model

View

Controller

의 약자가 바로 MVC죠..

 

이 MVC는 프로그램을 만드는 패턴의 한가지 방법일 뿐입니다.

물론 다른 패턴들도 존재를 하게 돼구요.

 

Model은 데이터와 핵심 처리를 말하며,

View는 사용자와의 직접적인 인터페이스를 말하며,

Controller는 사용자의 요청의 흐름이나 데이터의 흐름을 처리하는 중심적인 역할을 말합니다.

각각을 분리하여, 서로간의 간섭을 최소화하여 개발/유지/보수의 편리성을 높이는 것입니다.

 

원래 VC++내의 MFC 구조가 MVC 구조이며, struts 또한 MVC 구조입니다.

 

웹을 기본으로 설명해보지요..

 

게시판을 예로 들지요..

 

자동차는 예로써 적합하지 않습니다. ㅡㅡ;;

 

웹에 있는 아무 게시판이나 보시면..

 

아... 이 지식검색에서 질문을 보는것도 게시판 형식이니 지식검색을 보죠.

 

 

님이 질문하신거 답변 보려고 뭘 하셨나요??

 

어딘가에 있는 링크를 클릭하셨죠??

 

그럼 브라우저가 그 클릭을 감지해서 http 프로토콜로 데이터를 만들어서

 

네이버 서버쪽으로 request 를 전달하지요..

 

요기까지가 입력이고...

 

 

mvc는 이 이후부터 적용됩니다.

 

요청을 받은 서버는...

 

요청 받은 업무를 처리할 페이지를 찾고 그 페이지로 지금 들어온 request를 전달하지요..

 

여기까진 보통 개발자들이 초기 환경설정시에만 신경쓰는 웹서버, 컨테이너, was 등등이 담당합니다.

 

 

request를 전달받은 페이지는 어떤 게시물을 읽어야되는지 판단하고

 

그 게시물을 가져옵니다.

 

가져올때 보통은 데이터 가공을 편하게 하기 위해서 data class에 담지요..

 

요 데이터 클래스가 model에 해당합니다.

 

가공되지 않은 원천 데이터를 담고 있는 객체들..

 

db라든가 file, data class 등등 원천 데이터가 담겨 있는 것들을 거의 model 이라고 보시면 됩니다.

 

아무튼... 모델에 담겨있는 데이터에서 필요한 가공처리를 하지요..

 

view에서 처리하기도 하지만 보통 컨트롤러에서 제목을 view에서 보여줄만큼의 길이로 자른다든가...

 

보여지면 안될 데이터를 "12345***" 이런 형식으로 처리한다든가...

 

추가로 보여줘야될 데이터를 더 가져온다든가 하는 일을 컨트롤러가 합니다.

 

view에서 보여줄 데이터를 전부 가져와서 지지구 볶구 하는 일을 보통 콘트롤러가 합니다.

 

아시겠지만...

 

이 일은 모델 부분에서 처리할 수도 있고 뷰에서 처리할 수도 있고...

 

다 가능합니다만

 

mvc 를 명확하게 구현하기 위해서 대부분 컨트롤러 영역에서 처리하는게 나중을 위해서 좋습니다. ^^

 

위처럼 처리된 데이터를 뷰로 전달하면

 

뷰는 전달 받은 데이터를 이쁘게 html 로 치장해서 보여주게 됩니다.

 

 

쓰다보니 두서없는 글이 되버렸네요... ㅡ,.ㅡ

 

요약 하자면....

 

전체 업무 프로세스중에...

 

데이터 자체를 담고 있는 db라든가 data class 라든가 file 등등을 모델 영역

데이터를 가공하고, 연산을 수행하고... 하는 일을 컨트롤러의 영역

가공된 데이터를 보여주는 부분을 뷰 영역이라고 보시면 됩니다.

 

반응형

관련글 더보기