2011-04-25 13 views
1

웹 응용 프로그램을 개발 중입니다.페이지로 리디렉션하는 중 문제가 발생했습니다.

jsp, servlet 및 bean을 wrriten했습니다. 데이터베이스에 성공적으로 레코드를 삽입 할 때 새 페이지로 재 지정하려고하지만 response.sendredirect()은 오류를보고합니다.

오류가

서버 요청을 이행하지 내부 오류() 발생.

예외 :

java.lang.IllegalStateException 
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) 
    javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126) 
    allotmant.seatAllot.processRequest(seatAllot.java:104) 
    allotmant.seatAllot.doGet(seatAllot.java:134) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

참고 : 근본 원인의 전체 스택 추적은 아파치 톰캣/6.0.20 로그에서 사용할 수 있습니다.

가능한 해결책은 무엇입니까?

답변

1

응답 헤더를 커밋 한 후 리디렉션을 보낼 수 없다고 생각합니다. 리디렉션 할 때 헤더에는 리디렉션 작업이 포함되어야합니다. 그러나 이미 본문 내용을 보낸 경우 머리글이 적용됩니다.

아마도 리디렉션 전에 본문 내용을 보내거나 (또는 ​​머리글을 위임 한 것일 수 있습니다.)

1

것은 당신이있어 있는지 확인하십시오

  1. 페이지에 조기 리디렉션을 수행. 페이지에서 너무 늦으면 응답 헤더가 이미 스트림에 커밋 된 것입니다. 클라이언트에 보내기 시작하기 전에 많은 바이트 만 버퍼링합니다 (일반적으로 8k).
  2. sendRedirect()을 실행하면 즉시 나머지 페이지 처리가 중단됩니다. # 1과 같은 이유로 나머지 페이지를 렌더링하면 응답 버퍼를 채울 수 있습니다. sendRedirect() 바로 뒤에 return으로 전화하여 서블릿, JSP 등을 종료하십시오.
관련 문제