본문 바로가기

spring

spring 예외처리 와 404 처리

728x90
반응형

spring으로 프로젝트를 진행하던 중 사용자의 잘못된 접근이나 예외 처리를 위해서 방법을 찾아보니

controller 쪽에서 Exception을 처리하기 위해서는 

  1. @ExceptionHandler 애노테이션을 이용한 처리
  2. @ControllerAdvice를 이용한 처리
  3. @ResponseStatus를 이용한 Http상태 코드 처리

이렇게 3가지 방법을 사용하는 것을 찾을수 있었다 찾아보니 @ControllerAdvice를 이용한 처리를 가장 범용으로 사용한다고 하여 이 방법을 사용하여 정리하기로 하였다

다른 방법에 대해 잘 모르기 때문에 왜 가장 범용으로 사용하는지는 잘 모르겠다 ㅠㅠ 나중에 찾아 보면서 공부해야겠다

 

예외처리를 하지 않았을때는 예를 들어 잘못된 파라미터를 전달하거나 존재하지 않는 페이지에 접근하면

 

잘못된 파라미터 전달

 

존재하지 않는 페이지 접근

 

예제 처리가 되어있지 않아서 지금은 에러가 이런식으로 나오고 있다

 

ExpectionController

 

ExpectionController라는 파일을 만든 다음 @ControllerAdvice 애노테이션을 통해서

Exception을 전문적으로 처리하는 클래스라는 것을 명시했다

modelAndView타입을 사용했다 

modelAndView타입은 model데이터와 view의 처리를 동시에 할수 있는 객체이다

errormv를 만들어서 modelAndView객체를 생성하고 반환하였다

 

 

errorpage

 

view에 errorpage를 만들어서 에러발생ㅠㅠ라는 메세지와 함께 받아온 오류를 보여주었다

 

 

잘못된 파라미터를 주었을때

 

db에 없는 값을 보내니 에러가 나고 errorpage가 보여준것을 알수 있었다. 

이때 잘못된 url를 사용했을때는 errorpage로 가지 않고 

 

 

존재하지 않는 페이지 접근

 

이페이지가 다시 나왔다 이것을 해결하기 위해 검색해보니 web.xml에서 따로 막아야한다고

찾아서 web.xml에 따로 설정을 해주었다. 다른 방법이 있을거 같기는한데 찾지 못한건지 진짜 없는건지 ㅠㅠ

 

 

web.xml 설정

 

위에 코드를 web.xml에 추가 해주고 따로 404.jsp도 만들어 주었다 

 

잘못된 주소 입력

 

이렇게 오류 처리를 일단 마무리 해주었다 오류페이지를 따로 꾸며 주지는 않았지만 그건 나중에 천천히 해야겠다

 

explorer

 

 

익스플로어에서는 내가 설정한 오류페이지가 나오지 않아서 찾아보니

 error page 크기가 512바이트 보다 적으면 가지고 있는 자체 에러페이지를 보여준다고 한다 

익스를 제외한 요즘 나온 엣지나 크롬에서는 정상 작동하는것으로 확인 하였다

728x90
반응형