2011-10-16 3 views
0

웹 응용 프로그램에서 Struts 2를 사용하고 있습니다.Struts 2의 리디렉션

일반적으로 내 응용 프로그램의 struts 필터는 URL 패턴에서 * .do를 찾습니다.

이제 추가 요구 사항이 있습니다. 때

 http://appname:port/login.jsp 

에서 응용 프로그램 종류의의 login.jsp가 비즈니스 규칙을 기반으로 표시할지 여부를 결정.

그래서이 URL 패턴을 이상적으로 필터링하고 struts 액션 (LoginDecideAction이라고 부름)을 통해 보내야합니다.

1 단계는 web.xml의 필터 URL 패턴에 URL 패턴을 추가하는 것입니다. 이제이 URL 패턴 '* login.jsp'가 LoginDecideAction에 매핑되는 스트럿을 어떻게 말할 수 있습니까?

Struts 2를 처음 사용했습니다. 도움을 주시면 감사하겠습니다.

답변

1

login.jsp가 표시되면 s:action 태그를 추가하여 비즈니스 로직을 처리 할 수있는 Struts 액션을 호출하십시오. 보기를 표시하려면 executeResult="true"을 사용하십시오. 의에 대한 자세한 내용은 : 액션, 아래 링크를 참조하십시오

http://struts.apache.org/2.0.14/docs/action.html

1

이것에 대해 갈 수있는 몇 가지 방법이 있습니다; 제임스의 대답을 먼저 확장 해 보겠습니다.

(S2.0은 꽤 오래되었지만 여기서는 current action tag docs입니다.)

login.jsp 파일을 노출하고 (WEB-INF에 넣지 말 것) <s:action> 태그를 사용하여 LoginDecideAction을 실행하십시오. 동작 내에서 로직은 executeResult="true" 기술을 사용하면 윈도우 위치를 설정하는 자바 스크립트가없는 한 어떤 일이 발생하더라도 login.jsp URL에있게된다는 것을 의미합니다.

IMO 이건 좀 거슬려서 (그리고 난 action 태그의 큰 팬이 아니야). 오히려 JSP 페이지가 JSP 페이지를 렌더링하거나 비즈니스 로직이 말한 경우 다른 JSP 페이지를 렌더링하는 작업으로 즉각 리다이렉트했다.

당신 생각할 당신이 말하는 및 S2 실제로 struts.action.extension 재산합니다 (default struts.properties file docs for details 참조를 사용하여 확장으로 jsp을 설정하여 .jsp 요청을 처리해야하는지 않습니다. 그러나 당신은 그것을위한 작업을 만들 필요 것 아마도 다른 .jsp 요청이 S2에서 처리되지 않았는지 확인하십시오. 아마도 가치가 없습니다.

관련 문제