2012-01-03 2 views
0

조치 클래스 내부에서 요청의 헤더를 수정하거나 설정할 수있는 방법이 있습니까? 나는 그것을 수정하고 싶다. 또는 우리는 'attribute'와 매개 변수에 값을 넣는 것처럼 요청 헤더 안에 플래그를 넣고 싶다고 말할 수있다.자바에서 요청 헤더 설정

답변

3

HttpServletRequestWrapper을 사용하면됩니다. 그러나 그것은 아주 더러운 해결책입니다. 정말로 다른 방법으로 문제를 해결할 수 있습니까?

1

수 없습니다. 서블릿에서 리턴 된 요청 매개 변수는 수정할 수 없습니다. Map. 요청에서 리턴 된 컨텐츠는 (서블릿을 통해) 추가/삭제할 수 없습니다.

플래그를 설정하려면 세션에 저장하고 다른 작업에서는 플래그 &을 세션에서 삭제하는 것이 좋습니다.

+0

이는 요청에서 데이터 만 가져올 수 있음을 의미합니다.편도 데이터 이동 – muneebShabbir

+0

예, 요청이 클라이언트에서 서버로 전송 된 데이터입니다. 진짜 정보를 보내는 클라이언트라고 생각하십시오. 헤더 요청을 조작 할 기회가 있다면 누구든지 코드를 통해 스푸핑 할 수 있습니다. 잠깐, 가능하지만 Servlet의 경우 컨테이너가 허용하지 않아야합니다. –

+0

컨테이너의 의미는 무엇입니까? 나는 struts-1에서 작업 중이며 액션 클래스에서 요청을 수정하려고 시도하고있다. – muneebShabbir

0

자세한 내용을 입력해야합니다. 서버가 요청을 받으면 요청 헤더를 조작하려는 것 같습니다. 왜 그렇게하고 싶은지 이해가 안됩니다. 응답 헤더를 수정하는 것이 좋습니다. 그러나 요청은 아닙니다.

+0

실제로 흐름을 시뮬레이션하고 싶습니다. 헤더는 타사 모듈에 의해 설정됩니다. 하지만 로컬에 내가 그걸 반영하려고 그 이유를 반영하려고합니다 Header of request – muneebShabbir

1

원본 요청을 원하는 변경 내용이 포함 된 요청 클래스로 래핑해야한다고 생각합니다.

응용 프로그램 논리에 더 적합한 이러한 개체를 처리 할 때 이전에 요청 매개 변수를 구문 분석 한 다음 원래의 개체를 수정하려는 위치에 해당 개체의 상태를 설정하는 것이 더 좋은 디자인 일 수 있습니다 머리글.

+0

좋은 소리 ... 나는 그것을 시도해야합니다 – muneebShabbir

+0

당신은 내게 어떻게 내 요청을 감쌀 수 있습니까? – muneebShabbir

0

나는 당신이 할 수있는 그들은 깨끗한 방법은 HttpServletRequestWrapper

그냥 무시 getHeader, 대해 getHeaders, getHeaderNames를 통해 생각하고 당신은 갈 수 있습니다.

1

당신이 추가하려면이 파이어 폭스 플러그인을 사용할 수 있습니다 당신이 브라우저 요청을이 What is the proper way of setting headers in a URLConnection?

같은 것을 할 수 있습니다 경우 자바, 를 사용하여 URL 연결을 열려고하는 경우/임의의 수를 수정 요청 헤더.

https://addons.mozilla.org/en-US/firefox/addon/modify-headers/

이에 대한 대답은 당신이 해결하려는 문제가 무엇에 따라 달라집니다

1

행운을 빕니다.

의견 중 귀하가 테스트하려고하는 것이 하나 있습니다. 이 경우 두 가지 기본 옵션이 있습니다.

  1. 모의 요청 (유닛 스타일 테스트)을 사용하십시오.
  2. 클라이언트의 헤더를 변경합니다 (통합 스타일 테스트).

실제 클라이언트에서 테스트하려면 클라이언트 쪽에서 헤더를 설정하십시오.

mocking 클라이언트 상호 작용을 위해서는 모의 형식을 사용해야합니다. 예를 들어, StrutsTestCaseMockStrutsTestCase (외부 컨테이너) 및 CactusStrutsTestCase (내부 컨테이너) 클래스를 제공하여 요청 특성 및 특성을 쉽게 조작 할 수 있습니다.