2009-04-08 3 views
3

저는 Struts 2를 처음 접했고이 구문을 보았습니다 (이 튜토리얼에서 권장).Struts2, 메소드 사용에 대한 모범 사례 = {1}

<action name="Register_*" method="{1}" class="Register"> 
    <result name="input">/member/Register.jsp</result> 
    <result type="redirectAction">Menu</result> 
</action> 

나는 Register. {1} 메소드를 호출하는 것으로 알고 있습니다. 문제는 사용자가 다른 (임의의) 값을 넣을 수 있고 500 오류 (올바르게 오류로 기록됨)가 발생할 수 있다는 것입니다.

어떻게 예방할 수 있습니까?

답변

1

먼저 Register. {1} 메소드를 호출하지 않습니다. 그것은 URL이 실제로 그래서 사용자가 수동으로 무언가에 URL을 변경하는 경우

Register_View 
Register_Edit 
e.t.c. 

것을 의미

을 (등을 표시, 편집 보통) Register_가 {1} 여기서 {1} 작업 유형이 될 수 부를 것이다

Register_methodThatDoesNotExist 

그런 다음 struts 2가 오류를 반환합니다.

하지만 이것이 왜 문제가됩니까? 사용자가 URL을 수동 조작하면 모든 기술을 사용하는 모든 웹 응용 프로그램에서 오류가 반환됩니다 (404 또한)

정확히 방지하려고 시도한 것은 무엇입니까?

업데이트 :

500 오류는 (어떤 규칙과 일치하지 않는 것) 오류 페이지로 리디렉션 모든 작업을 잡을 수를 방지합니다. 이 위키 스트럿에서 "와일드 카드 기본"기본 단락을 참조하십시오

http://cwiki.apache.org/WW/action-configuration.html

스트럿 구성의 끝 내 응용 프로그램에서

+0

Register_invalidMethod.action가 500 오류를 반환 /> UserAction JSP -----> 사용자 -

조치 :

그래서 지금은 표준이 404. java.lang.NoSuchMethodException : Register.invalidMethod() 유효하지 않은 URL에 의해 트리거되는 "500"내부 오류를 방지하려고합니다. 심각한 웹 응용 프로그램에서이 구문을 사용하는 방법을 알 수 없습니다. – Pool

+0

struts 문서에서 와일드 카드에 대해 좀 더 읽어보십시오. 원하는 것을 포함하여 많은 일을하는 많은 트릭이 있습니다. – kazanaki

+0

문제는 첫 번째 와일드 카드와 일치하므로 500 오류가 발생한다는 것입니다. 이 구문을 모두 피하는 것이 가장 좋은 방법이라고 생각하십니까? – Pool

8

우리는 다음과 같이 사용에 있어야합니다 :

<action name="*/*" class="{1}Action" method="{2}"> 
     <interceptor-ref name="CustomAuthStack" />  
      <result>/pages/{1}/{2}.jsp</result> 
      <result name="input">/pages/error/denied.jsp</result> 
      <result name="logout">/pages/error/denied.jsp</result> 

      <!-- methods that come back to listing after processing --> 
      <result name="remove" type="redirectAction">{1}/list</result> 
      <result name="save" type="redirectAction">{1}/list</result> 
      <result name="enable" type="redirectAction">{1}/list</result> 

    .... 

    </action> 

슬래시 (예 : myapp/users/list) 슬래시를

와 함께 사용하도록 설정해야합니다
<constant name="struts.enable.SlashesInActionNames" value="true" /> 

strus.xml. , list.jsp가 등

+0

Struts2는 항상 슬래시를 네임 스페이스로 해석하고 두 번째를 대상 작업으로 해석하기 때문에 멋져 보이지만 제대로 작동하지 않았습니다. – Akku