Spring MVC 异常,怎样显示比较友好?


本文基于Spring 注解,让Spring跑起来。本文使用Mysql数据库。

实施过程中完全没有任何异常,测试过程中也没出错,偏偏在客户试用过程中报错了。报错了,怎样给客户友好界面?两个方法:一,别出错;二,一旦错了,尽量给一个友好界面。

友好界面是设计师的事,程序员的事就是让错误显示在设计师设计好的界面上。

在src/applicationContext.xml中添加如下代码:

  1.       <!-- 异常控制 -->  
  2. lt;bean id="exceptionResolver"  
  3. class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
  4. <property name="defaultErrorView" value="/exception" />  
  5. <property name="exceptionMappings">  
  6.     <props>  
  7.         <prop key="java.lang.Exception">/exception</prop>  
  8.     </props>  
  9. </property>  
  10. lt;/bean>  

        这一段代码可使程序运行过程中出现Exception时,自动跳转到/WEB-INF/pages/exception.jsp页面,而在exception.jsp页面以如下方式获取异常:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  4. <!DOCTYPE html  
  5. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  6. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  7. <html>  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  10. <script type="text/javascript">  
  11.     function showErrors() {  
  12.         var err_el = document.getElementById('errors');  
  13.         if (err_el.style.display == 'none') {  
  14.             err_el.style.display = '';  
  15.         } else {  
  16.             err_el.style.display = 'none';  
  17.         }  
  18.     }  
  19. </script>  
  20. </head>  
  21. <body>  
  22.     ${exception.message },您可以  
  23.     <a href="javascript:showErrors();">查看详情</a>或直接  
  24.     <a href="javascript:reback();">返回</a>。  
  25.     <div style="display: none; color: red;" id="errors">  
  26.         <c:forEach items="${exception.stackTrace }" var="e">  
  27.     ${e }<br />  
  28.         </c:forEach>  
  29.     </div>  
  30.   
  31. </body>  
  32. </html>  
        当然,这远没有达到“友好界面”,请对exception.jsp页面重新改造,让它看起来顺眼一点。

相关内容