项目使用的是SpringMVC,为了让不同的异常用相应的公共页面统一处理,
使用了:SimpleMappingExceptionResolver
配置方式如下:
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="bizFailure"></property>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">dataAccessFailure</prop>
<prop key="java.sql.SQLException">bizFailure</prop>
<prop key="java.lang.RuntimeException">bizFailure</prop>
</props>
</property>
</bean>
使用的是Tomcat 6.0.18。
----------------------------------------------------------------------------------
问题如下:
bizFailure.jsp没有被正确显示,IE上显示的画面仍然是TOMCAT自己的500错误画面
于是我在bizFailure.jsp中增加了:System.out.println("123");
"123"可是被正确显示出来,说明处理已经进入了bizFailure.jsp页面,
但为什么不能显示这个页面的HTML内容呢?

解决方案 »

  1.   

    bizFailure.jsp
    <%@page contentType="text/html;" isErrorPage="true" pageEncoding="GBK"%>
    <%
    response.setStatus(HttpServletResponse.SC_OK);
    %>
    试试
      

  2.   


    我这样试过,没有用。后来也试过response.setStatus(500);,同样没用
      

  3.   

    jsp里的errorpage没指定吧,指定就行了,在web.xml里配置也可以
      

  4.   

    我认为这个属性 defaultErrorView 的意思不是指定要返回的页面,而是一种解析类型 你可以定义一种继承 org.springframework.web.servlet.view.InternalResourceView类并且自己实现视图里面需要的类型(jsp或json或xml)
      

  5.   

    我也有同样的问题,用web.xml 
    加配置
    <error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/WEB-INF/jsp/failure.jsp</location>
    </error-page>
    是可以解决,而且jsp 文件中不用加 isErrorPage="true",但是这样的化spring 提供的SimpleMappingExceptionResolver又有什么用呢?SimpleMappingExceptionResolver 应该在web.xml中之前被try ...catche 住才处理的