이번 프로젝트를 진행하면서 사용하는 프레임워크들인데 새로운 컨텍스트를 만들어낼 때마다 자꾸 xml 을 빠뜨려 장기 기억차원에서 정리해본다.
iBatis 를 위한 sql-map-config 파일에 해당 sql 을 담은 xml 파일을 추가한다.
우선 새로운 액션을 만들면 다음의 추가 클래스들을 준비해야한다.
TwitterAction 이라 가정하고 나열해보자
- TwitterAction.java
- TwitterForm.java
- TwitterVo.java
- TwitterService,java + TwitterServiceImpl.java
- TwitterDao.java + TwitterDaoImpl.java
스트럿츠의 폼 객체를 할당 받는 TwitterForm 은 struts-config.xml 의 <form-beans> 에 추가해주어야한다.
액션 매핑을 외부파일로 둔다면 매핑 파일을 추가해주어야한다.
스프링 플러그인을 스트럿츠에 추가하여 사용한다면 해당 내용의 xml 파일도 추가해야한다.
SQL 매퍼를 위한 맵 파일도 선언해주어야한다.
- struts-config-xml
- struts-config-twitter.xml (액션매퍼)
- spring-servlet-twitter.xml (객체생성, 트랜젝션)
- sql-map-config.xml
- sql-twitter.xml (SQL 문장)
그러면 struts-config.xml 에 추가할 내용을 살펴보자
외부 xml 파일에 매핑할 내용을 담아놓은 후
액션 매핑을 위해 엔티티들 선언한다.
- struts-config.xml
<!ENTITY struts-config-twitter SYSTEM "struts-config/struts-config-twitter.xml">
<action-mappings>
&struts-config-twitter;
</action-mappings>
스프링의 트랜젝션을 사용하기 위해 플러그인 항목에 스프링 서블릿 내용을 추가한다.
- struts-config.xml
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/com/lgfs/resource/application-context.xml
,/WEB-INF/spring-servlet/spring-servlet-twitter.xml" />
</plug-in>
매핑을 담당하는 xml 은 아래처럼 해당 액션 메소드와 뷰 파일을 연결해준다.
- struts-config-twitter.xml
<action path="/twitter" type="org.springframework.web.struts.DelegatingActionProxy"
name="twitterForm" parameter="cmd" scope="request" validate="false">
<forward name="ajaxResult" path="/mobile/common/ajaxResult.jsp" />
<forward name="twitter" path="/mobile/twitter/twitter.jsp"/>
<forward name="twtLogin" path="/mobile/twitter/twtLogin.jsp"/>
<forward name="success" path="/mobile/main/success.jsp"/>
<forward name="failure" path="/mobile/common/failureException.jsp"/>
</action>
객체 생성과 트랜젝션을 당담할 스프링 xml 파일을 추가한다.
- spring-servlet-twitter.xml
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="twitterDao" class="com.lgfs.mobile.persistence.TwitterDaoImpl">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>
<bean id="twitterService" parent="baseTransactionProxy">
<property name="target">
<bean class="com.lgfs.mobile.service.TwitterServiceImpl">
<property name="twitterDao"><ref bean="twitterDao"/></property>
</bean>
</property>
</bean>
<bean name="/twitter" class="com.lgfs.mobile.action.TwitterAction">
<constructor-arg index="0" ref="twitterService"/>
</bean>
</beans>
- sql-map-config.xml
<sqlMapConfig>
<settings enhancementEnabled="true"
useStatementNamespaces="true" />
<sqlMap resource="com/lgfs/mobile/persistence/twitter.xml"/>
</sqlMapConfig>
정리해보니 별거 없는데 실제 사용할 때는 뭐 이리 많은지 복잡해보인다.
'Development' 카테고리의 다른 글
Struts 2 Performance Tuning (0) | 2011.06.22 |
---|---|
프로젝트 진행시 사용하는 유틸리티 노트 (0) | 2011.01.05 |
EUC-KR 과 UTF-8 (2) | 2010.09.12 |
Selectors API Level 2 (0) | 2010.09.05 |
스프링 + 제우스 조합에서 리다이렉트 문제점 (0) | 2010.08.26 |