■ SwitchAction
Context 내에 여러 개의 모듈이 있을 때 현재 작업중인 모듈에서 다른 모듈로 전환하고 새로운 모듈내의 포워드 하는 일을 수행.
일반적인 그룹핑은 web.xml 안에서 설정해 놓은 xml 파일들을 아래와 같이 추가하여 사용한다.
<!-- groupping module -->
<init-param>
<param-name>config</param-name> <!-- 이름은 아무거나 -->
<param-value>
/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-dispatch.xml,
/WEB-INF/struts-config-mapping.xml,
/WEB-INF/struts-config-lookup.xml
</param-value> <!-- /WEB-INF/(기본베이스 - 다른폴더일때는 경로를 설정해주어야 함)폴더 안에 struts-config.xml파일 위치 지정 - 여기까지 작성후 struts-config.xml파일을 생성 -->
</init-param>
그러나 SwitchAction을 사용하면 아래와 같이 모듈별로 설정을 할 수 있다.
<!-- switch Action module types -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/dispatchModule</param-name>
<param-value>/WEB-INF/config/struts-dispatchModule.xml</param-value>
</init-param>
<init-param>
<param-name>config/lookupModule</param-name>
<param-value>/WEB-INF/config/struts-lookupModule.xml</param-value>
</init-param>
<init-param>
<param-name>config/mappingModule</param-name>
<param-value>/WEB-INF/config/struts-mappingModule.xml</param-value>
</init-param>
<init-param>
<param-name>config/uploadModule</param-name>
<param-value>/WEB-INF/config/struts-uploadModule.xml</param-value>
</init-param>
<init-param>
<param-name>config/validatorModule</param-name>
<param-value>/WEB-INF/config/struts-validatorModule.xml</param-value>
</init-param>
<init-param>
<param-name>config/tilesModule</param-name>
<param-value>/WEB-INF/config/struts-tilesModule.xml</param-value>
</init-param>
web.xml 에 위와 같이 설정을 해주고 각각의 모듈별 xml을 만든다.
위에 보이는 경로대로
/WEB-INF/config/ 폴더 안에 각각의 모듈 xml 파일을 만든다. 여기서 중요한것은
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>
</init-param>
config 가 기본적으로 있어야한다.
그림에서 같이 WEB-INF에(SwitchAction을 사용하지 않은 경우) 있는 xml 파일들이 config 폴더에 모듈별로 들어가 있는 것을 볼 수 있다.
그리고 config 폴더 안에 있는 모든 xml 파일 안에는 아래와 같은 설정이 있어야 한다.
<!-- switchAction을 사용할때는 모든 config파일에 SwitchAction설정이 되어있어야 한다. -->
<action path="/toModule"
type="org.apache.struts.actions.SwitchAction"/>
- strus-dispatchModule.xml 파일을 보면.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<!-- Form Bean Definitions -->
<form-beans>
<form-bean name="infoBean" type="com.myhome.info.beans.InfoFormBean"/>
</form-beans>
<!-- Global Exception Definitions -->
<global-exceptions>
</global-exceptions>
<!-- Global Forward Definitions -->
<global-forwards>
</global-forwards>
<!-- dispatch action mappings -->
<action-mappings>
<action path="/toModule"
type="org.apache.struts.actions.SwitchAction"/>
<action path="/index"
type="org.apache.struts.actions.ForwardAction"
parameter="/register.jsp"/>
<action path="/dispatchModule"
name="infoBean"
scope="request"
parameter="method"
unknown="true"
type="com.myhome.dispatch.InfoDispatchAction">
<forward name="result" path="/result.jsp"/>
<forward name="list" path="/list.jsp"/>
<forward name="query" path="/modify.jsp"/>
<forward name="update" path="/template.jsp"/>
<forward name="delete" path="/template.jsp"/>
</action>
</action-mappings>
<!-- Controller Processor Definition -->
<controller processorClass="com.myhome.info.processor.InfoRequestProcessor"/>
<!-- Message Resources Definitions -->
<!-- Plug Ins Configuration -->
<!-- Tiles plugin -->
<!-- Validator plugin -->
</struts-config>
모듈을 변경하는 방법은 URI가 아래와 같다면
http://localhost:8080/toModule.do?prefix=/moduleB&page=/index.do
prefix 가 어느 모듈을 사용하는지를 결정하고, page가 그 모듈에서 어떤 액션을 사용할지를 결정한다.
- jsp 페이지에서 prefix와 page로 파라미터를 전송한다.
<script type="text/javascript">
function module(prefix, page){
document.indexform.prefix.value=prefix;
document.indexform.page.value=page;
document.indexform.submit();
}
</script>
<form method="POST" name="indexform" action="toModule.do">
<input type="hidden" name="prefix">
<input type="hidden" name="page">
이렇게 설정을 하고 사용할 모듈과 액션을 보내주면 그에 맞는 모듈이 실행된다.
'FrameWork > Struts1' 카테고리의 다른 글
struts1 커스터마이징하여 사용하기. (0) | 2009.11.11 |
---|---|
Struts1 FileDownload (0) | 2009.08.18 |
Struts1 fileUpload (0) | 2009.08.18 |
Struts1의 Action 3 (0) | 2009.08.16 |
Struts1의 Action 2 (0) | 2009.08.12 |
Struts1의 Action 1 (0) | 2009.07.27 |
Struts1에서 ActionForm 사용하기. (0) | 2009.07.25 |
Struts1 에서 iBatis 사용하기 (0) | 2009.07.05 |
Struts 1 을 사용하여 간단한 회원가입, 리스트 불러오기. (0) | 2009.07.05 |
Struts1 개발환경 설정. (0) | 2009.07.05 |