<Struts2 네임스페이스 에 대한 고찰>
* 우선 경로를 /exam/~~ 이렇게 루트로 시작하게 사용하는것은 경로의 변경시 모두 변경해줘야 하는 불편이 있으므로 가능한 사용하지 않는것이 좋다는 것을 원칙으로 한다
* result 파일의 위치는 /exam/Question_Form.jsp 으로 가정한다
첫번째
<package name="exam" extends="struts-default">
<action name="to_Question_Form" class="action.exam.QuestionForm">
<result>exam/Question_Form.jsp</result>
</action>
</package>
※ 현재위치 : 루트 안의 파일
-> 실행명령 : location="to_Question_Form.action";
※ 문제점 : jsp 에 js 파일이나 css, img 등 파일을 불렀을 경우 /로 시작하는 절대 경로를 적지 않는 한 경로는 대부분 틀려진다. 그리고 잘 사용하지 못하면 exam/exam/exam/exam/~~~ 을 보게 될지도 모른다
두번째 방법
<package name="exam" extends="struts-default">
<action name="to_Question_Form" class="action.exam.QuestionForm">
<result>Question_Form.jsp</result>
</action>
</package>
※ 현재위치 : 루트 안의 파일
-> 실행명령 : location="exam/to_Question_Form.action";
※ 현재위치 : exam 폴더 안의 파일
-> 실행명령 : location="to_Question_Form.action";
※ 문제점 : exam 폴더가 아닌곳에서 루트 또는 다른 곳에서 location="to_Question_Form.action"; 액션을 실행하면 문제없이 액션클래스가 실행되어버리고 result 에서 위치 문제로 에러를 발생시킨다
세번째 방법 - 네임스페이스
<package name="exam" namespace="/exam" extends="struts-default">
<action name="to_Question_Form" class="action.exam.QuestionForm">
<result>Question_Form.jsp</result>
</action>
</package>
※ 현재위치 : 루트 안의 파일
-> 실행명령 : location="exam/to_Question_Form.action";
※ 현재위치 : exam 폴더 안의 파일
-> 실행명령 : location="to_Question_Form.action";
※ 장점 : namespace 를 /exam 으로 주었기 때문에 /exam 경로가 아닌곳에서 액션이 실행되면 네임스페이스 에러로 액션의 실행을 근본적으로 막을 수 있다
네임스페이스는 항상 실행되어야 할 위치에서 액션이 실행 될 수 있도록 해준다
네임스페이스 별로 package 를 나눠두는것도 유지보수에 좋은 것 같다
'Web > Framework' 카테고리의 다른 글
[IBATIS] 파라메터클래스(parameterClass) 에 대한 고찰 (0) | 2009.07.27 |
---|---|
[STRUTS2] 인터셉터(interceptor) 에 대한 고찰 (0) | 2009.07.27 |
[STRUTS2] ResultType - chain (0) | 2009.07.27 |
[STRUTS2] 와일드카드(*) 매핑 (0) | 2009.07.27 |
[STRUTS2] 파일 업로드 (FileUpload) (0) | 2009.07.27 |