Dorado 9 : 01. 普通HTTP异常

普通请求通常指那些直接访问某个视图的请求,例如那些通过.d结尾的URI直接映射某个.view.xml的请求。除此之外也包括那些装载Dorado的脚本库、CSS、以及通过/resources/*装载各种资源文件的请求。

Dorado通过SpringMVC中的SimpleMappingExceptionResolver来处理在这类请求中发生的异常,该类在Dorado缺省的上下文中是这样配置的:

 

<bean id="dorado.mappingExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="defaultErrorView" value="/dorado/ErrorPage" />
</bean>

在上面的配置中,Dorado只定义了默认的错误页面,即/dorado/ErrorPage。

如果要自定义此处的异常处理,可以在dorado-home下的servlet-context.xml中添加一个同名的Bean,以此来覆盖Dorado中的缺省配置。例如在下面的配置为某种特定异常定义了专用的错误处理页面。

<bean id="dorado.mappingExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <map>
            <entry key="xxx.xxx.SecurityException" value="/access-denied.jsp" />
        </map>
    </property>
    <property name="defaultErrorView" value="/dorado/ErrorPage" />
</bean>

当然,Dorado并不局限只能使用SimpleMappingExceptionResolver,如果有需要也完全可以使用SpringMVC中提供的其他异常处理器,例如DefaultHandlerExceptionResolver,具体请查阅Spring的文档。

 在ErrorPage的处理逻辑中,通过request.getAttribute("exception")或doradoContext.getAttribute(DoradoContext.REQUEST, "exception")可以获得实际发生的异常。