스프링 Web Application 만들기 - 스프링 기본
설정파일
web.xml
- <servlet-name>요소에서 논리이름 정의
- 논리이름-servlet.xml 이 스프링 설정 파일의 기본 이름
- <init-param><param-name>contextConfigLocation</param-name></init-param> 에서 지정 가능
DispatcherServlet 클래스는 웹 요청 URL과 컨트롤러를 맵핑한 정보를 관리하는 기능 없음.
스프링 MVC와 브라우저에서 보낸 웹 요청 URL과 컨트롤러 맵핑을 관리하는 클래스는 HandlerMapping 클래스.
DispatcherServlet 인스턴스는 HandlerMapping 인스턴스를 참조하고, HandlerMapping 인스턴스에서 반환된
컨트롤러에 처리를 위임.
스프링 MVC는 어플리케이션을 구축하는 구성 정보를 의존 관계 주입 컨테이너에서 관리.
즉, 스프링 설정 파일로 HandlerMapping 인터페이스를 구현하는 어떤 클래스를 사용하는지 정의하거나,
컨트롤러에서 호출하는 비즈니스 로직을 의존 관계 주입해서 어플리케이션 구성을 관리.
스프링 MVC의 주요 구성 요소
요소 |
역할 |
DispatcherServlet |
브라우저가 송신한 요청을 일괄 관리한다. |
HandlerMapping |
웹 요청 URL과 컨트롤러 클래스를 맵핑시켜 관리한다. |
Controller |
비즈니스 로직을 호출하고, 관리 결과인 ModelAndView를 반환한다. |
ViewResolver |
컨트롤러 클래스가 반환한 뷰 이름으로 이동할 뷰를 결정한다. |
View |
프리젠테이션 계층으로의 출력 데이터를 설정한다. |
HandlerMapping 인터페이스 구현 클래스
요소 |
역할 |
org.springframework.web. servlet.handler. BeanNameUrlHandlerMapping |
웹 요청 URL과 스프링 설정 파일에 정의한 컨트롤러의 name 속성을 맵핑시켜 컨트롤러를 찾는다. 스프링 설정 파일에 HandlerMapping을 전혀 정의하지 않을 때의 기본 클래스 |
org.springframework.web. servlet.handler. SimpleUrlHandlerMapping |
웹 요청 URL과 컨트롤러의 맵핑을 일괄 정의한다. 스프링 설정 파일에 컨트롤러의 정의가 분산되는 것을 방지한다. |
org.springframework.web. servlet.mvc.support.Controller. ClassNameHandlerMapping |
컨트롤러에 어노테이션을 부여해서 웹 요청 URL과의 관련을 정의한다. |
ViewResolver 인터페이스 구현
요소 |
역할 |
org.springframework.web. servlet.view. InternalResourceViewResolver |
WEB-INF 폴더 안에 있는 뷰 자원을 해결한다. 스프링 설정 파일에 ViewResolver를 전혀 정의하지 않을 때의 기본 클래스 |
org.springframework.web. servlet.view. ResourceBundleViewResolver |
프로퍼티 파일에서 뷰 이름과 그 실체인 뷰를 관련짓는다. 프로퍼티 파일은 클래스패스 상에 배치한다. |
org.springframework.web. servlet.view.velocity. VelocityViewResolver |
벨로시티 템플릿으로 만든 뷰를 해결한다. |
View 인터페이스 구현
요소 |
역할 |
org.springframework.web. servlet.view. InternalResourceView |
JSP 등 자원용 뷰. 요청 속성에 모델을 지정하고, ResouceDispatcher 클래스를 참조해서 지정된 뷰에 전달한다. |
org.springframework.web. servlet.view. JstlView |
JSTL를 사용한 페이지용 뷰. InternalResourceView 클래스의 서브 클래스. 스프링의 메시지 자원을 JSTL 포맷 태그에서 참조할 수 있게 된다. |
org.springframework.web. servlet.view.velocity. VelocityView |
벨로시티 템플릿용 뷰 |
org.springframework.web. servlet.view.json. MappingJacksonJsonView |
JSON 형식으로 출력하기 위한 뷰. JSON으로의 변환 라이브러리로서 Jackson(http://jackson.codehaus.org) 라이브러리가 필요 |