2012-07-02 1 views
3

다음 질문이 있습니다. 우리는 기본적으로 사용자와의 상호 작용을 제어하는 ​​JSP 및 동작 클래스 집합 인 응용 프로그램을 가지고 있습니다. 작업은 페이지를 올바르게 표시하는 데 필요한 일부 매개 변수를 설정합니다. 시스템의 URL에는 항상 다음 페이지로 이동할 페이지를 정의하는 이벤트의 이름이 들어 있습니다.URL 스택 패턴

거의 모든 페이지에는 이전 페이지로 연결되는 취소 버튼이 있습니다. 처음부터 취소 버튼 URL은 모두 엄격하게 정의되었지만 결국 시스템이 커지면서이 버튼에 대한 로직을 프로그래밍하여 이전 페이지로 정확하게 이어지게 만들었습니다.

예를 들어 A, B, C 세 페이지가 있다고 가정합니다. 페이지 A는 페이지 B로 이어지는 링크를 가지고 B는 C로 연결되는 링크를가집니다. 따라서 C는 B B)에 표시 할 엔티티의 키도 포함합니다. 그러나 페이지 A가 수정되었고 이제는 C에 대한 링크가 있습니다. 이제 우리는 C 페이지를 확인하고 URL을 적절히 설정해야합니다. 그러면 논리가 꽤 혼합됩니다.

그래서 저는 다음과 같은 해결책을 제안했습니다. 사용자 세션에는 CancelStack이라는 특수 객체가 있어야합니다. 페이지로 연결되는 모든 작업은 스택 내부에 URL (이벤트 및 필요한 추가 데이터 포함)을 푸시해야합니다. 모든 페이지에서 취소 버튼에는 cancelStack이라는 특수 이벤트로 이어지는 URL이 있어야합니다.

  • (가) 세션에서 스택을 취소 검색 :

    은 무엇 cancelStack 조치가하는 것은 이것이다.

  • 마지막 url을 팝하고 사용하지 마십시오.
  • URL을 다시 팝하고 해당 URL로 리디렉션하십시오.

왜 사용하지 않고 마지막 URL을 검색하나요? 우리가 페이지 A와 B를 가지고 있다고 가정하자. A가 스택 내에서 url 인 장소에 대한 B 액션으로 이어지고, 이것은 B 페이지에 대한 취소 URL이어야한다. 이제 B에 대한 작업은 스택 안에 URL을 배치합니다. 따라서 사용하지 않고 팝하고 첫 번째 URL을 팝하여 A 동작으로 리디렉션합니다.이 동작은 A URL을 스택에 다시 추가합니다 (따라서 스택 크기는 2가 아니라 1 씩 감소합니다).

꽤 좋은 계획처럼 보이지만 사용하지 않고 스택의 맨 위 요소가 튀어 오르는 것이 이상하게 보입니다. 그러므로 나는 질문이있다. 취소 버튼을 올바르게 구성하기 위해 세션 내에 URL 시퀀스를 저장하기위한 디자인 패턴이 있습니까?

+0

많은 웹 사이트에서 사용되는 '빵 부스러기'시스템과 비슷합니다. 아니면 설명을 잘못 읽었습니까? – Wivani

+0

아니요, 아이디어는 거의 동일하지만 아니요, 여기서는 탐색 경로 탐색을 정확하게 사용하지 않습니다. 이전에 방문한 페이지를 추적해야합니다. –

답변

1

나에게 맞는 것처럼 보였습니다. 솔직히 말해서 지금 당장 당신의 문제를 다루는 디자인 패턴을 생각할 수는 없지만, 만약 cancelStack 외에도 currentURL에 대한 참조를 유지하면 결국 currentURL을 스택에 넣을 것이라고 생각합니다. 취소 페이지는 너를 괴롭히는 여분 pop를 제거 할 것이다.
그렇지 않으면 pop 상단이 cancelStack입니다.
예. 귀하의 예 :

한다고 가정 우리는 페이지 A와 B, 그래서 currentUrlAcancelStack에 밀려 취소되지 않은위한 B 선도 ...

currentUrl

는 A. 작업이 .그런 다음 B에 대한 작업이고 currentURLB이지만 작업이 취소되므로 B이 스택에 배치되지 않습니다. 따라서 cancelStack의 상단은 A입니다 ( currentUrlB 임). 따라서 pop cancelStack을 검색하면 A ( pop은 필요 없음)