본문 바로가기
IT_Developers/struts2

Struts2 - struts.xml 란? include, namespace 사용방법

by 고코더 2019. 10. 4.


스트럿츠2 struts.xml 파일을 로직별로 서비스별로 나누기 


안녕하세요.
고코더 입니다.


이번 시간에는 struts.xml를 알아보고 이를 inlcude 해서 파일을 나누고
namespace 를 사용하는 방법을 알아보려고 합니다. 
이 파일은 스트럿츠에서 가장 중요한 역할을 합니다 (다 중요하다고 하네요)
좀 더 자세히 공부하고 싶다면 기존 강의를 참고하고 넘어오세요


 1. struts.xml 란?


시작부터 계속 수정하고 있는 이 파일을 간단하게 알아보려고 합니다.
- 스트럿츠2에 환경설정 파일은 struts.xml 입니다. 
- 웹 애플리케이션내의 처리 흐름을 설정 합니다. 
- 요청 이전 을 처리하는 process
- 요청 이후를 처리하는 interceptor 
- 통상 WEB-INF에 위치 하지만 배포등을 위해 src 폴더에 위치하는게 실무에서는 거의 정석입니다.

sturts.xml 태그  
* struts : struts.xml 의 시작 태그. package, include, bean, constant 가 포함되어 있습니다.
* package : 논리적인 그룹핑 단위 입니다. 상속이 가능하고 하위 패키지에 오버라이드 될 수 도 있습니다.
* name : 고유 키이며 맵핑 값을 나타냅니다. 
* namespace : 접근 되는 고유에 패스를 분리 할 수 있습니다. 서비스 별로 접근 경로를 분리할 수 있습니다. 


 2. struts.xml 생성 


파일 new에서 XML FILE을 선택하고 next를 클릭 합니다.

그리고 파일명과 패키지는 이렇게 생성합니다.
폴더 : Struts2Gocoder/src/map 
파일명 : struts2_test.xml

새로 개발된 파일명은 이렇게 코딩 합니다. namespace를 test로 하였습니다.
이는 이제 접근 경로 URI 앞에 test가 덧붙혀 집니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
     <package name="struts2_test" namespace="test"  extends="struts-default">
           <action name="hello" class="hello.HelloAction">
                <result name="success" >/WEB-INF/hello.jsp</result>
           </action>
           <action name="view" class="test.TestAction" method="getView">
                <result name="success" >/WEB-INF/test/view.jsp</result>
           </action>      
     </package>
</struts>
namespace를 활용해 URI를 분리 할 수 있습니다.


 3. src/struts.xml 파일 수정


기존 스트럿츠 xml 파일은 아래처럼 변경 됩니다. 
전부 새로 만들어진 설정파일로 이동하고
include file 태그래 해당 XML을 가르킵니다. 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
     <package name="Struts2Gocoder" extends="struts-default">          
     </package>
    
     <include file="map/struts2_test.xml" />
               
</struts>
참조될 xml은 해당 파일 위치에서 부터 찾습니다. src 폴더 아래이므로 xml로 시작합니다. 



결과 화면 


이전에 만든 소스를 그대로 나타납니다. 하지만 URI 중간에 /test가 생겼습니다.
네임스페이스 영향 떄문입니다. 서비스 별로 xml을 달리하여서 개발하는게 유지보수에 유리합니다.
게시판, 로그인, 가입 등 서비스가 다른 것들은 XML 파일을 전부 구분합니다.


마무리


하나의 XML로 관리하는 것 보다. 나누는 것이 유리 합니다.

댓글