[Spring] 마이바티스 xml 설정 - 2
1.web.xml에 추가
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- DispatcherServlet
스프링 MVC는 요청을 받았을 때 실제 작업은 다른 컴포넌트에 위임하는 방식으로 진행된다.
따라 DispatcherServlet는 프론트 컨트롤러를 담당하는 중요한 역할이다.
DispatcherServlet가 로드될 때 contextConfigLocation가 지정되어 있지 않다면
WEB-INF/서블릿이름-servlet.xml 에 정의된 빈을 WebApplicationContext에 로딩한다.
위에서는 *.do 형식의 url 패턴이 호출될 때 action 프론트 컨트롤러가 호출된다.
2.action-servlet.xml 추가
<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/views/member" />
<property name="suffix" value=".jsp" />
</bean>
- ViewResolver
String 타입의 뷰 이름을 지정해 주는 방법.
DispatcherServlet는 기본 ViewResolver로 InternalResourceViewResolver를 사용한다. - prefix
뷰 페이지의 root 경로 - suffix
호출 페이지의 확징자
따라서 test를 리턴하면 /WEB-INF/views/member/test.jsp 가 호출된다
2.action-servlet.xml 추가
<bean id="memberUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/member/*.do">memberController</prop>
</props>
</property>
</bean>
- org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
url 패턴에 매핑된 컨트롤러를 사용하는 방법
/member/*.do를 호출하면 memberUrlMapping를 통해 memberController가 실행된다.
2.action-servlet.xml 추가
<bean id="memberController" class="kr.co.springmybatis.controller.MemberControllerImpl">
<property name="methodNameResolver">
<ref local="memberMethodResolver"/>
</property>
<property name="memberService" ref="memberService" />
</bean>
<bean id="memberMethodResolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/member/listMembers.do">listMembers</prop>
<prop key="/member/memberForm.do">form</prop>
<prop key="/member/addMember.do">addMember</prop>
<prop key="/member/removeMember.do">removeMember</prop>
</props>
</property>
</bean>
- org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver
다수의 여러 url 값을 한개의 컨트롤러 클래스에 정의할 수 있다.
url값과 메소드 이름을 매핑시켜 동작을 수행시킬 때 사용한다. - <bean id=”memberController” class=”kr.co.springmybatis.controller.MemberControllerImpl”><property name=”methodNameResolver”><ref local=”memberMethodResolver”/>
methodNameResolver 프로퍼티에 memberMethodResolver를 주입해서 지정한 요청명에 대해 메서드를 직접 호출하게 함 - <prop key=”/member/listMembers.do”>listMembers</prop>
/member/listMembers.do를 요청하는 경우
memberController에 있는 listMembers 메서드를 호출 함