2009-06-15 3 views
6

Struts 1.x에서 구성 가능한 방법이있어서 내 동작 클래스가 HTTP 'POST'에서만 실행됩니다.Struts 1.x에서만 HTTP 요청을 'POST'로 제한하십시오.

나는 내 행동 수업 내에서 request.getMethod()을 사용할 수 있다는 것을 알고 있으며 그에 따라 특정 '물건'을 사용합니다.

감사합니다, 조나단

+0

누군가 GET을 보내면 어떤 일이 일어나기를 원합니 까? – skaffman

+0

이것은 단순히 데이터 캡처 앱이며 GET 인 경우 데이터를 DB에 저장하지 않습니다. 난 그냥 프로그래밍 방식으로 이외의 일을 xml '구성 가능한'방법이 있는지 확인 싶었어요. – Jonathan

+0

마지막으로 어떻게 구현 했습니까? – xain

답변

3

는 여기에 몇 가지 프로그램 및 구성 솔루션을 모두하고 생각입니다. 당신은 사용자 정의 액션 맵핑을 만들 ...

public class YourPOSTRequiredActionMapping extends ActionMapping { } 

... 당신의 스트럿에서의 사용에만 POST이다 매핑을 위해 config (설정) 할 수있다.

<action path="/your/path" type="YourAction" className="YourPOSTRequiredActionMapping" /> 

그런 다음 스트럿의 RequestProcessor를 확장하고

public class YourRequestProcessor extends RequestProcessor { 
    protected ActionMapping processMapping(HttpServletRequest request, HttpServletResponse response, String path) throws IOException { 
     ActionMapping mapping = super.processMapping(request, response, path); 
     if (mapping instanceof YourPOSTRequiredActionMapping) { 
      if (!request.getMethod().equals("POST")) { 
       mapping = null; 
      } 
     } 
     return mapping; 
    } 
} 

이 YourRequestProcessor를 사용하도록 스트럿의 설정을 구성해야합니다 processMapping 오버라이드 (override) 할 수있다.

<controller processorClass="YourRequestProcessor" nocache="true" contentType="text/html; charset=UTF-8" locale="false" /> 

나는이 코드를 이전의 일부 작동 코드를 바탕으로 작성했지만 위의 샘플 코드도 컴파일하지 않았습니다.

2

응용 프로그램을 변경하지 않고이 작업을 수행하는 한 가지 방법은 비 POST 요청을 거부하는 서블릿 필터를 작성하는 것입니다. 그런 다음이 필터를 web.xml 파일에 연결하고 URL 패턴을 Struts 컨트롤러의 경로와 일치하도록 구성 할 수 있습니다.

5

web.xml을 사용하여 액세스 권한을 정의 할 수 있습니다. 이 제약 조건은 GET 요청을 방지합니다.

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>struts action servlet</web-resource-name> 
     <url-pattern>*.do</url-pattern> 
     <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <!-- no one! --> 
    </auth-constraint> 
    </security-constraint> 
+0

이 시나리오에서 응용 프로그램이 GET 요청을 받으면 어떻게됩니까? – xain

+0

@xain - 당신이하고 싶은 것을 설명하는 새로운 질문으로 더 잘 물어볼 것입니다. – McDowell

0

McDowell 응답은 특정 요구 사항이없는 한 허용 할 수 없습니다. 사용자에게 의미있는 정보를 표시하거나 현재 웹 구성의 실제 오류 관리에 남겨 둘 수있는 503 HTTP 오류가 발생해야합니다.