티스토리 뷰
안녕하세요. 오늘은 스프링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 패턴과 요청 처리과정에 대해서 알아보았고 포스팅을 마치도록 하겠습니다 :)
- Total
- Today
- Yesterday