블로그 이미지
헤이장

Notice

Recent Post

Recent Comment

Recent Trackback

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  • total
  • today
  • yesterday
2009. 7. 27. 13:42 Web/Framework

<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 를 나눠두는것도 유지보수에 좋은 것 같다

posted by 헤이장