스프링의 웹 기술은 MVC 아키텍처를 근간으로 한다
1. MVC 구조란 ?
MVC란 비즈니스 로직 처리를 하는 모델 M, 화면 출력 뷰 V, 제어 로직 담당인 컨트롤러 C 로 클라이언트의 요청을 처리하는 응답구조를 뜻한다.
MVC 아키텍처는 보통 프론트 컨트롤러(front Controller) 패턴과 함께 사용한다.
2. 프론트 컨트롤러(FrontController) 역할
이 프론트 컨트롤러는 주로 제일 앞에서 서버로 들어오는 모든 요청을 받아서 처리한다.
또한, 공통처리 작업을 먼저 수행 한 후, 적절한 세부 컨트롤러로 작업을 위임해주고
예외가 발생할 때는 일괄된 방식으로 에러를 처리해준다.
스프링에서 제공하는 서블릿/MVC의 핵심은 DispatcherServlet이라는 프론트 컨트롤러가 있다.
이 DispatcherServlet은 MVC 아키텍처로 구성된 프리젠테이션 계층을 만들 수 있도록 설계되어 있다.
3. Http 요청 접수
서블릿 컨테이너는 HTTP Protocol을 통해 들어오는 요청이 Dispatcher에 할당된 것이라면
HTTP 요청정보를 DispatcherServlet에게 전달한다.
web.xml에 DispatcherServlet이 전달받을 url 패턴이 정의되어 있는데 그것이 이 소스이다.
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
위 소스는 appServlet 로 등록된 DispatcherServlet에게 /로 시작하는 모든 요청을 할당하라는 의미가 된다.
DispatcherServlet이 담당할 Http 요청 url 패턴을 지정해 줘야 한다. Url에는 *나 ** 와 같은 와이드카드를 사용하는 패턴을 넣을 수 있다.
*.do 와 같이 .do로 끝나는 요청 처리 ex) /test.do , /example.do
/app*처럼 /app으로 시작하는 URL 처리 ex) /appTest, /appSample, /app
**는 하나 이상의 경로를 지정해 줄 때 사용하기 때문에
/app/**/sub 는 /app으로시작하고 /sub로 끝나는 URL을 처리 ex) /app/exam/sub, /app/a/b/c/sub