로그인 페이지로 사용자를 인증하고 싶습니다. 하나의 로그인 페이지 인 login.jsp
을 만들었으며 로그인 폼이 있습니다. 양식을 제출할 때 그 값은 점검 서블릿으로 방향이 바뀌고 서블릿은 사용자가 유효한 경우 세션 UserName을 설정합니다."응답이 이미 커밋되었습니다."오류 - chain.doFilter()
필터를 통해이 요청을 가로 채고 chain.doFilter
뒤에 페이지를 리디렉션하려고하지만 응답이 이미 커밋되었다는 오류 메시지가 나타납니다. 문제가 무엇입니까?
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse res=(HttpServletResponse) response;
if(req.getRequestURI().contains("/ShowHome")) {
chain.doFilter(req, res);
if(req instanceof HttpServletRequest) {
boolean authorized=false;
HttpSession session= req.getSession(false);
if(session!=null) {
if(session.getAttribute("UserName")!=null) {
authorized=true;
}
} else {
authorized=false;
}
if(authorized) {
System.out.println("You are authorized user ");
res.sendRedirect("/FilterAuth/welcome.jsp");
} else {
System.out.println("authentication failed ! ");
try {
//response.flushBuffer();
RequestDispatcher disp= request.getRequestDispatcher("/index.jsp");
disp.forward(request, response);
return;
} catch(Exception e) {
e.printStackTrace();
}
}
귀하의 질문에 대해 귀하의 코드를 포맷하십시오 : 응답은 이미'doChain' 메소드가 전달한 함수에 의해 커밋되었습니다. 예 : 필터는 리다이렉트 커멘드를 발행 한 서블릿에 전송됩니다. – home
코드를 보류 중입니다 (검토 대기 중). 처음 두 번의'if '에 대해'}'가 없습니다. 거기에 어떤 코드가 있는가, 아니면 단지'}'s인가? – Windle