SpringMVC 전역 이상 처리 방식 3 가지

자바 이 프로젝트 의 개발 에 있어 서 바 텀 데이터 베 이 스 를 조작 하 는 과정 이 든 업무 층 의 처리 과정 이 든 통제 층 의 처리 과정 이 든 예측 할 수 있 고 예측 할 수 없 는 여러 가지 이상 처 리 를 피 할 수 없다.모든 과정 이 이상 을 단독으로 처리 하고 시스템 의 코드 결합 도가 높 으 며 작업량 이 많 고 통일 되 지 않 으 며 유지 보수 작업량 도 매우 크다.
SpringMvc 는 이상 처리 라 는 지원 을 제공 합 니 다.SpringMvc 가 제공 하 는 전역 이상 처리 체 제 를 통 해 모든 유형의 이상 처 리 를 각 처리 과정 에서 결합 시 킬 수 있 습 니 다.이렇게 하면 관련 처리 과정의 기능 이 비교적 단일 할 뿐만 아니 라 이상 정보의 통일 적 인 처리 와 유 지 를 실현 할 수 있 습 니 다.
SpringMVC 전역 이상 처리 방식 3 가지
  • Spring MVC 가 제공 하 는 간단 한 이상 프로세서 Simple Mapping Exception Resolver 를 사용 합 니 다.
  • Spring 의 이상 처리 인터페이스 Handler Exception Resolver 가 자신의 이상 처리 장 치 를 사용자 정의 합 니 다.
  • @ExceptionHandler 주 해 를 사용 하여 이상 처 리 를 실현 합 니 다.
  • 사례 실 조
    전역 이상 처리 방식 1
    SimpleMappingExceptionResolver 대상 설정
    
    <bean class="org.springframework.web.servlet.handler.SimpleMappingException Resolver">
      <property name="defaultErrorView" value="error"></property>
      <property name="exceptionAttribute" value="ex"></property>
      <property name="exceptionMappings">
        <props>
          <prop key="com.xxx.exception.BusinessException">error1</prop>
          <prop key="com.xxx.exception.ParamsException">error2</prop>
        </props>
      </property>
    </bean>
    
    전역 이상 처리 방식 2
    HandlerExceptionResolver 인터페이스 구현
    
    @Component
    public class GlobalException implements HandlerExceptionResolver {
      @Override
      public ModelAndView resolveException(HttpServletRequest request,
        HttpServletResponse response, Object handler, Exception ex) {
          Map<String,Object> map=new HashMap<String, Object>();
          map.put("ex", ex);
          ModelAndView mv=null;
          if(ex instanceof ParamsException){
          	return new ModelAndView("error_param", map);
          }
          if(ex instanceof BusinessException){
          	return new ModelAndView("error_business", map);
          }
        return new ModelAndView("error", map);
      } 
    }
    
    Handler Exception Resolver 인 터 페 이 스 를 실현 하 는 이상 처리 장 치 를 사용 하여 이상 처 리 를 하 는 것 은 통합 이 간단 하고 좋 은 확장 성 이 있 으 며 기 존 코드 에 침입 성 이 없다 는 장점 이 있 으 며,이상 처리 시 이상 이 발생 하 는 대상 을 얻 을 수 있어 더욱 상세 한 이상 처리 정 보 를 제공 하 는 데 유리 하 다.
    전역 이상 처리 방식 3
    페이지 프로세서 계승 BaseController
    
    public class BaseController {
      @ExceptionHandler
      public String exc(HttpServletRequest request,HttpServletResponse
      response,Exception ex){
        request.setAttribute("ex", ex);
        if(ex instanceof ParamsException){
          return "error_param"; 
        }
        if(ex instanceof BusinessException){
          return "error_business"; 
        }
        return "error";
      } 
    }
    
    @ExceptionHandler 주 해 를 사용 하여 이상 처 리 를 실현 합 니 다.통합 이 간단 하고 확장 성 이 좋 습 니 다(이상 처리 할 Controller 류 를 BaseController 에 계승 하면 됩 니 다).Spring 설정 을 추가 하지 않 아 도 된다 는 장점 이 있 지만 이 방법 은 기 존 코드 에 침입 성 이 있 습 니 다(기 존 코드 를 수정 하여 관련 류 를 BaseController 에 계승 해 야 합 니 다).이상 처리 시 이상 을 제외 한 데 이 터 를 가 져 올 수 없습니다.
    확장~캡 처 되 지 않 은 이상 처리
    Unchecked Exception 의 경우 코드 가 강제 적 으로 캡 처 되 지 않 기 때문에 무시 되 는 경우 가 많 습 니 다.실행 기간 에 Unchecked Exception 이 발생 하고 코드 에 해당 하 는 캡 처 와 처리 가 되 지 않 으 면 어색 한 404,500...등 서버 내부 오류 알림 페이지 에 직면 해 야 할 수도 있 습 니 다.우 리 는 전면적 이 고 효과 적 인 이상 처리 메커니즘 이 필요 하 다.현재 대부분의 서버 는 웹.xml 에서(Websphere/Weblogic)또는(Tomcat)노드 를 통 해 특정 이상 상황 을 설정 하 는 디 스 플레이 페이지 를 지원 합 니 다.웹.xml 파일 을 수정 하고 다음 내용 을 추가 합 니 다:java.lang.Throwable/500.jsp 500/500.jsp 404/404.jsp
    이상 은 SpringMVC 전역 이상 처리 의 세 가지 방식 의 상세 한 내용 입 니 다.SpringMVC 전역 이상 처리 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

    좋은 웹페이지 즐겨찾기