참조 : Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성

Spring Reference에 Dispatcher와 WebApplicationContex와의 관계를 나타낸 그림이 있어서 퍼왔습니다.
사용자 삽입 이미지앞에서 addressBook-servlet.xml로 .do로 끝나느 요청을 넘기기로 했고 지금 이 글에서 작성해야할 addressBook-servlet.xml을 예전에는 hanlderMapping이라고 머릿속으로 단순화 시켜서 인식하고 있었는데 그게 아닌 것 같습니다. addressBook-sevlet.xml은 WebApplicationContext이고 이 안에 Handler Mapping, View Resolver, Controller들을 등록해 둘 수 있는 것 같습니다.

web/WEB-INF 폴더 안에 addressBook-servlet.xml 이라는 파일을 생성합니다.
Spring 2.0에서 XML 기반의 configuration metadata의 기본 포맷은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>
  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>
</beans>

이제 여기에 Handler Mapping, View Resolver, Controller들을 넣어 봅시다.

Handler Mapping은 요청이 들어온 URL에 따라 어떤 컨트롤러가 사용되어야 하는지 매핑시키는 것으로 이해를 했는데 아무것도 지정해 두지 않으면 bean이름으로 매핑 시킨다고 하는데 흠~ 공부가 필요한 부분입니다.

View Resolver는 view를 실제 파일 이름으로 변환해주는 변환기 역할을 한다고 합니다.

 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>

위와 같이 등록해 둡니다. view앞에는 /WEB-INF/jsp/ 를 붙이고 뒤에는 .jsp를 붙여서 실제 파일을 찾을 수 있도록 합니다. viewClass 속성은 jsp가 JSTL을 사용할 때 적어주는 것 같습니다.

Controller차례인데요. 먼저 Handler는 요청을 처리하는 Controller의 메소드 단위 라고 합니다. 역시 이 부분도 공부가 필요할 것 같습니다. 이것을 다음과 같이 설정합시다.

<bean name="/index.do"
  class="org.springframework.web.servlet.mvc.ParameterizableViewController">
  <property name="viewName" value="index" />
 </bean>

index.do 요청이 발생하면 ParameterizableViewController로 요청이 넘어가고 이 녀석은 view 이름으로 index를 반환해 줍니다. 그럼 이것이 View Resolver를 타고 /WEB-INF/jsp/index.jsp 를 찾게 됩니다.

이제 addressBook-servlet.xml 파일은 다 만든것 같습니다.
bk66.xml
실제 web/WEB-INF 폴더 밑에 jsp라는 폴더를 만들고 그 안에 index.jsp 파일을 만듭니다. index.jsp파일은 제대로 돌아가는지 확인하기 위해 "오~케이!!!"가 출력 되도록 간단히 만들어 봤습니다.
bk65.jsp
그리고 서버를 가동 시키면....
bk64.bmp헉... 이렇게 나오네요;; 음~ 각본에 없던 것이 발생했습니다.

원래대로면 Jstl.jar파일이 없어서 에러가 발생해야 하는데..왜 404가 뜨는지 모르겠군요. 분명히 addressBook-servlet.xml파일은 존재하는데;; 일단은 문제가 발생했으니 여기서 STOP해야겠습니다.

=> 문제 해결 됨. 서버 에서 실행(Run on Server)를 할 때 Alt + Shift + x -> R 단축키를 사용하지 말고 프로젝트 이름 우클릭 -> Run as -> Run on Server 클릭하면 됩니다.