2010-01-08 3 views
7

WebSphere는 경고 메시지 "SRTServletRes W 경고 : 헤더를 설정할 수 없습니다."를 기록합니다. 응답은 이미 하나의 JSP 요청에 대해 커밋되었습니다. 나중에 코드에서 헤더 폰트가 필요해. 나는 약간의 연구를했고 Servlet이 출력 스트림으로 더 많은 데이터를 보내려고한다는 것을 이해했으나 스트림은 이미 커밋되었습니다. 이 서블릿 코드가 다른 JSP에서 제대로 작동하기 때문에 이것이 왜이 JSP에서만 발생하는지 이해하지 못했습니다. 이 페이지는 리디렉션되지 않으며 응답 헤더가없는 응답을 다시받습니다.JSP에서 헤더를 설정할 수 없습니다. 응답이 이미 커밋되었습니다.

답변

20

응답이 커밋되면 적어도 헤더가 이미 클라이언트 측으로 전송되었음을 의미합니다. 너무 늦기 때문에 응답이 이미 커밋 된 경우 헤더를 설정하거나 변경할 수 없습니다. 다음 조건 중 하나 이상이 충족 될 때마다

응답이 커밋됩니다

  • HttpServletResponse#sendRedirect()가 호출되었습니다.
  • 서블릿 또는 JSP로 응답 출력에 이미 2K가 넘습니다.
  • 서블릿 또는 JSP로 응답 출력 스트림에서 0KB 이상 2K 미만이 기록되었습니다. flush()이 호출되었습니다.

2K 버퍼 제한은 응용 프로그램 서버 구성에서 구성 할 수 있습니다.

이 응답을 커밋하기 전에 전에 만 설정되도록 코드 논리를 다시 정렬해야합니다. 절대스크립틀릿을 사용하여 응답 헤더를 설정/변경합니다. 체인을 계속하기 전에 Filter에서 또는 요청을 보내기 전에 페이지 컨트롤러 Servlet에서해야합니다. 또한 JSP include 파일에 의해 호출되지 않도록주의하십시오.

관련 문제