티스토리 뷰

Spring

Spring MVC 패턴

토마's 2016. 10. 4. 20:23

안녕하세요. 오늘은 스프링MVC 패턴에 대해서 포스팅 해보려고 합니다.

최근의 모든 웹 개발은 거의 모델 2 방식을 사용을 합니다. 모델 2 방식은 흔히 MVC 구조를 응용한 방식인데, 중요한 것은

"화면과 데이터 처리의 분리"하는 것입니다.



MVC 패턴의 장점

MVC 패턴은 개발자와 웹 퍼블리셔의 영역을 분리할 수 있으며, 컨트롤러의 URI를 통해서 뷰를 제어할 수 있기 때문에, 뷰의

교체나 변경과 같은 유지보수에 유용하게 사용될 수 있습니다.


MVC 패턴은 Model, View, Controller의 약자로 다음과 같은 역할을 합니다.


모델(Model)

 데이터 혹은 데이터를 처리하는 영역을 의미합니다. 

뷰(View) 

 결과 화면을 만들어 내는데 사용하는 자원을 의미합니다. 

컨트롤러(Controller) 

 웹의 요청(request)를 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할을 합니다. 



다음은 Spring MVC의 동작 과정을 나타냅니다.



위와 같은 프로세스로 웹의 동작과정을 알아보았는데, 저 같은 경우는 보통 요청이 들어오면,

1) Front-Controller에서 모든 요청을 다 받아서 각각의 요청을 구분지어줍니다.

2) 구분된 요청들이 적절한 Controller를 찾아서 호출해서 각각의 요청을 전달해줍니다.

3) 그리고 처리된 각 요청들을 개발자들이 Service 객체에서 비즈니스 로직을 작성해서 요청을 처리해줍니다.

4) 그리고 서비스 객체에서 데이터베이스의 접근이 필요한 요청들은 데이터베이스 작업을 담당하는 DAO(Data Access Object)를 이용해서 

원하는 데이터를 요청하게 됩니다.

5) DAO 객체는 Mybatis를 이용하는 Mapper를 통해서 원하는 작업을 수행하게 됩니다.

6) 서비스 객체가 처리한 데이터가 컨트롤러에 전달되면 컨트롤러는 다시 스프링 MVC쪽으로 데이터를 전달하게 됩니다.

7) 마지막으로 전달된 데이터가 아래와 같은 화면 템플릿을 통해 화면에 나타나게 됩니다. (아래는 프리마커 템플릿 이용)




스프링에서 주로 사용하는 어노테이션의 종류


 어노테이션

설명 

사용 

 @Controller 

 스프링 MVC의 컨트롤러 객체임을 명시

 클래스

 @RequestMapping

 특정 URI에 매칭되는 클래스나 메소드임을 명시 

 클래스, 메소드 

 @RequestParam 

 요청에서 특정한 파라미터의 값을 찾아낼 때 사용 

 파라미터 

 @RequestHeader 

 요청에서 특정 HTTP 헤더 정보를 추출할 때 사용 

 파라미터 

 @PathVariable 

 현재의 URI에서 원하는 정보를 추출할 때 사용 

 파라미터 

 @CookieValue 

 현재 사용자의 쿠키가 존재하는 경우 쿠키의 이름을 이용해서 쿠키의 값을 추출 

 파라미터

 @ModelAttribute 

 자동으로 해당 객체를 뷰까지 전달하도록 할 때 사용 

 메소드, 파라미터 

 @SessionAttribute 

 세션 상에서 모델의 정보를 유지하고 싶은 경우에 사용 

 클래스 

 @InitBinder 

 파라미터를 수집해서 객체로 만들 경우에 커스터마이징 

 메소드 

 @ResponseBody 

 리턴 타입이 HTTP의 응답 메시지로 전송

 메소드, 리턴타입 

 @RequestBody 

 요청 문자열이 그대로 파라미터로 전달 

 파라미터 

 @Repository 

 DAO 객체 

 클래스 

 @Service 

 서비스 객체 

 클래스 



이상으로 오늘은 Spring MVC 패턴과 요청 처리과정에 대해서 알아보았고 포스팅을 마치도록 하겠습니다 :)