springmvc 사용자 정의 이상 통일 처리
7967 단어 Exception
1. springmvc가 HandlerExceptionResolver 인터페이스를 실현하는 클래스
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="error">property>
<property name="exceptionAttribute" value="ex">property>
<property name="exceptionMappings">
<props>
<prop key="com.simple.exception.ServiceException">error-serviceprop>
props>
property>
bean>
2. 사용자 정의 이상 통일 처리
1. 새 MyExceptionHandler 사용자 정의 이상 통합 클래스
package com.simple.exception;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
public class MyExceptionHandler implements HandlerExceptionResolver{
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
if (ex instanceof HttpRequestMethodNotSupportedException) {
try {
return handleHttpRequestMethodNotSupported((HttpRequestMethodNotSupportedException) ex, request,
response, handler);
} catch (IOException e) {
log.error("RequestMethodNotSupported ", e);
}
}
String uri = request.getRequestURI();
log.error(" :" + uri);
log.error(" :", ex);
// ,
if (null != uri && uri.contains("/appwap")) {
return new ModelAndView("error/appwap-500");
}else if (null != uri && uri.contains("/pcweb")){
return new ModelAndView("error/pcweb-500");
}
return null;
}
/**
* DefaultHandlerExceptionResolver RequestMethod
* RequestMethod , RequestMethod , HEAD ,MyExceptionHandler
* , warn
* @param ex
* @param request
* @param response
* @param handler
* @return
* @throws IOException
*/
protected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
log.warn(ex.getMessage());
String[] supportedMethods = ex.getSupportedMethods();
if (supportedMethods != null) {
response.setHeader("Allow", StringUtils.arrayToDelimitedString(supportedMethods, ", "));
}
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, ex.getMessage());
return new ModelAndView();
}
}
2.spring xml
```xml
"myExceptionHandler" class="com.simple.exception.MyExceptionHandler">
3. 테스트 결과 2017-09-17 15:45:19 [com.simple.exception.MyExceptionHandler]-[ERROR] 이상 요청 경로:/test/hello 2017-09-17 15:45:19 [com.simple.exception.MyExceptionHandler]-[ERROR] 이상 정보:java.lang.Exception: 사용자 정의 이상 처리atcom.simple.controller.HelloWorldController.hello(HelloWorldController.java:22) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ……
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 예외(Exception) 처리 메커니즘 상세 정보누구나 이렇게 왔습니다.)그러나 우리는 가능한 한 주도면밀하게 고려하여 프로그램 실패를 초래할 수 있는'낌새'를 요람 속에 말살해야 하기 때문에 파라미터의 합법성 검사를 하는 것이 필요하다.그 중에서 매개 변수 검사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.