1.SwitchAction
Context 내에 여러 개의 모듈이 있을 때 현재 작업중인 모듈에서 다른 모듈로 전환하고 새로운 모듈내의 포워드 하는 일을 수행한다. struts1 의 가장 핵심적인 Action중의 하나라고 할 수 있다.
[struts1의 Groupping 과 Module]
struts1에서의 그룹핑을 사용해서 하는 방법이 가장 쉬운 방법 중에 하나다 . web.xml에
-----------------------------------------------------------------------------------------------
<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>
</init-param>
-----------------------------------------------------------------------------------------------
다음과 같은 방법으로 xml 파일을 모아두면 그룹핑 방식으로 struts를 구성하는 것이다. 또한 module로 나누는 방식은
web.xml에서
-----------------------------------------------------------------------------------------------
<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>
-----------------------------------------------------------------------------------------------
이런식으로 한번에 선언하지 않고 나누어 선언 할 수 있다.
특징:
그룹핑을 하면 각 설정xml파일안의 이름들이 같으면 안되나 module별로 나누면 같은 이름이 있어도 된다.
즉 그룹핑 에서는 <action path="">의 path명이 모든 xml 파일이 같으면 안되나 module방식에서는 같아도 상관이 없다.
작성방법
1)web.xml 에 module별로 xml파일을 설정한다
-----------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>struts1</display-name>
<servlet>
<servlet-name>action</servlet-name> <!-- 아무이름이나 하면 된다. -->
<servlet-class> <!-- 클래스 지정 -->
org.apache.struts.action.ActionServlet
</servlet-class>
<!-- 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>
</servlet>
<servlet-mapping> <!-- url 패턴 설정 -->
<servlet-name>action</servlet-name> <!-- *.do로 들어오면 servlet-name이 action 실행 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
-----------------------------------------------------------------------------------------------
모듈화를 위해 다음과 같이 모듈로 설정한다.
여기서 중요한 부분은
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>
</init-param>
이부분과 같지 config는 기본적으로 있어야 하며
<init-param>
<param-name>config/dispatchModule</param-name>
<param-value>/WEB-INF/config/struts-dispatchModule.xml</param-value>
</init-param>
위의 빨간색 이름은 동일해야 한다. 또한 param-name의 빨간색 부분은 jsp페이지의 이름이 prefix인 hidden값으로 보내는 value와 같아야 해당 모듈이 실행된다.
2) 각각의 config.xml파일을 생성한다.
<action path="/toModule"
type="org.apache.struts.actions.SwitchAction"/>
이부분은 각각의 config.xml파일에 모두 존재해야 한다.
3) jsp페이지에서 name 이 prefix와 page인 hidden값을 생성하고 각각을 파라미터로 넘겨준다.
<input type="hidden" name="prefix" value="/mappingModule">
<input type="hidden" name="page" value="/register.do">
prefix로 전달되는 value는 web.xml파일에 설정된 mappingModule을 사용하겠다는 것이고 page는 그 모듈안에 있는 어떠한 action을 사용할지를 적어 주면 된다.
'Framework > STRUTS 1' 카테고리의 다른 글
struts 1 - validator (0) | 2009.07.01 |
---|---|
struts 1 - File Uplod & File Download (0) | 2009.07.01 |
Struts 1 - 스트럿츠 1의 다양한 Action Class 들 part 2 (0) | 2009.06.29 |
Struts 1 - 스트럿츠 1의 다양한 Action Class 들 part 1 (0) | 2009.06.26 |
Struts 1 - ActionForm 사용하기 (0) | 2009.06.26 |