[Spring]Filter 예외처리

2025. 4. 3. 18:39·프로젝트/트러블슈팅

intro

  • 프로젝트를 진행하며 발생한 문제 상황과 해결 과정들을 상세히 기록하고 추후에 같은 문제가 발생 했을때 빠르게 문제 해결하기 위해 트러블 슈팅을 정리할려고 한다.
  • 기록하는 습관을 기르기 위해 프로젝트 기간동안 꾸준히 작성할 것 이다.

JPA 를 활용한 TodoList 프로젝트에서 예외처리를 하는 중 Filter 에서 던지는 예외처리를 ErrorResponse 로 안받아진다.

 

⚠️ 1.문제 상황 발생

비밀번호를 잘못 입력해서 예외가 발생하면  Valid를 이용하여 처리가 가능했다.

 

BUT,,

 

 Filter 에서 던져주는 예외처리를 위의 형식으로 처리해주지 못한다.

 

🔎 2.원인 추론

API 가 실행되면 Servlet 을 통해 Controller 로 가기이전 Filter를 이용하여 값을 처리 해준다.

그런데 @ControllAdvice 는 servelet 까지 요청이 넘어온후 그후 요청이 처리되는 Controller 와 같은 과정에서 발생한 예외만 처리 가능하다.

 

그래서 Servlet 이전에 처리하는 Filter 에서 발생한 예외는 처리하지 못한다.

 

 

📝  3.해결방안

필터 내에서 따로 예외를 처리하면 됐다. Http에 보여질 HttpServletResponse 메소드를 이용해 예외를 JSON 형태로 보여준다.

 

  •  HttpServletResponse 메소드
더보기
HttpServletRequest httpRequest = (HttpServletRequest) request;
        String requestURI = httpRequest.getRequestURI();

        HttpServletResponse httpResponse = (HttpServletResponse) response;

        if(!isWhiteList(requestURI)){
            HttpSession session = httpRequest.getSession(false);
            if (session == null || session.getAttribute(Const.LOGIN_USER) == null){
                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                httpResponse.setContentType("application/json");
                httpResponse.setCharacterEncoding("UTF-8");
                httpResponse.getWriter().write("{ message : 로그인 해주세요 }");
                return;
            }
        }

        chain.doFilter(request,response);
    }

 

📌4.결과 확인

 

로그인하지 않고 일정을 생성하면 401Unauthorized 코드와 함께 로그인을 해달라는 메시지를 전달한다.

'프로젝트 > 트러블슈팅' 카테고리의 다른 글

[Spring]무한 스크롤 + Enum 정렬 트러블슈팅  (2) 2025.04.23
[Spring/Security] 403 Forbidden? 권한 문제가 아니라 CSRF 이 원인이였다  (0) 2025.04.21
[JAVA]Enum 에 선언된 메소드 호출오류  (0) 2025.03.13
[JAVA]리스트 초기화 오류  (1) 2025.03.05
[JAVA]입력 버퍼비우기 - (Next() , NextLine())  (0) 2025.03.05
'프로젝트/트러블슈팅' 카테고리의 다른 글
  • [Spring]무한 스크롤 + Enum 정렬 트러블슈팅
  • [Spring/Security] 403 Forbidden? 권한 문제가 아니라 CSRF 이 원인이였다
  • [JAVA]Enum 에 선언된 메소드 호출오류
  • [JAVA]리스트 초기화 오류
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (136) N
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (29)
        • Java (15)
        • SQL (12)
      • Java (10)
      • 프로젝트 (22) N
        • 트러블슈팅 (7)
        • 프로젝트 회고 (13) N
      • git,Github (2)
      • TIL (36) N
      • Spring (17) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java #arraylist #list #배열
    스파르타 코딩 #부트캠프 #첫ot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[Spring]Filter 예외처리
상단으로

티스토리툴바