一个包含web服务异常处理和普通异常处理的小框架
业务场景 当一个项目中包含有web服务(rest)时,当遇见异常时,需要返回给客户端json格式的数据;但是项目中非web服务的异常则需要正常处理的情况。即同一个web项目中包含两种不同的异常处理。
简单说明 直接使用Spring MVC架构web服务 ,目前只支持json返回值 1.所有产生异常先经过restservice-servlet.xml中注册的rest服务异常类处理
<bean id="RestServiceExceptionHandler" class="com.restjplat.quickweb.web.restServer.AppExceptionHandler"> <property name="order" value="1" /> <property name="errorResolver"> <bean class="com.restjplat.core.webserver.DefaultRestErrorResolver"> <property name="exceptionMappingDefinitions"> <map> <entry key="com.restjplat.core.webserver.RestServiceException" value="404" /> <entry key="Throwable" value="500" /> </map> </property> </bean> </property> </bean>
2.在 AppExceptionHandler 类中判断异常是否为rest异常,如果不是,则交给下一级异常处理。
//resources.properties 文件内定义了 凡是以 /rv1开头的请求就是rest服务 @Override public boolean isRestServiceException(HttpServletRequest request){ if(request.getServletPath().startsWith(Sysutils.getWebServerindex())) return true; else return false; }
3.非rest异常则直接由spring处理 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Throwable">error/500</prop> </props> </property> </bean>