`
Josh_Persistence
  • 浏览: 1631085 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Spring3.X @MVC - (九)Spring中强大的异常解析视图

阅读更多

前言:

一、总共有10节,也就是10篇博客来讲述Spring的MVC,几乎涵盖了所有Spring MVC中的内容。

 

二、我创建的例子是一个球场预订系统,例子我已经测试调试通过,是一个Maven的project,包含一个Parent project:wsheng-spring-base和一个子Module:wsheng-spring-mvc.

 

三、在Eclipse中直接import maven的project即可,会同时引入上诉两个project的。

 

四、如果你没有耐心,可以不必往下学习,因为网上有很多例子,但是都是讲的Spring MVC很少的面,而且你可以快速的上手,但如果你想真正了解Spring MVC中的很多细节,就可以慢慢的去看博客(从第一节到第十节),如果有什么问题,欢迎信息告诉我。

 

五、学习的方法是你可以先将源码导入到eclipse中,然后根据博客上的内容,对照源码,慢慢消化,这是个漫长的过程,但是会帮助你了解很多Spring MVC的细节。

===================================================================================

 

 

在Spring3.X @MVC - (八)Spring MVC创建并导出Excel和PDF视图的基础上:

http://josh-persistence.iteye.com/admin/blogs/1885286

继续学习怎样在Spring中映射异常视图。

 

1. 问题:

       在应用中发生未知的异常信息时,有可能应用服务器通常会向用户显示令人不快的异常堆栈信息。这些异常信息除了让用户不开心外,其实也会有一些潜在的风险,因为这些异常信息可能将内部方法调用层次暴露给用户。

        学过Java web应用的程序员都知道。我们可以在web.xml中配置当HTTP错误或者类异常发生时显示友好的JSP页面,但是Sping MVC中支持更加健壮的方法管理类异常视图。

 

2. 解决方案:

       在Web应用上下文中注册一个或者多个异常解析器Bean来解析未捕捉的异常。这些Bean必须实现HandlerExceptionResolver接口,以便使DispatcherServlet能自动检测他们。其实Spring MVC中自带了一个简单的异常解析器,让你将给类异常映射到视图。

 

3. 工作原理:

    假定预订服务由于预订不可用抛出如下异常:

package com.wsheng.spring.service;

 

import java.util.Date;

 

public class ReservationNotAvailableException extends RuntimeException {

 

 

    public static final long serialVersionUID = 1L;

    private String courtName;

    private Date date;

    private int hour;

 

    public ReservationNotAvailableException(String courtName, Date date, int hour) {

        this.courtName = courtName;

        this.date = date;

        this.hour = hour;

    }

 

    public String getCourtName() {

        return courtName;

    }

 

    public Date getDate() {

        return date;

    }

 

    public int getHour() {

        return hour;

    }

}

 

为了解析为捕捉的异常,你可以自定义自己的异常解析类来实现HandlerExceptionResolver接口。通常情况下,我们希望的是对于不同类别的的异常信息映射到不同的错误页面。Spring MVC自带了异常解析器SimpleMappingExceptionResolver,使你能在web应用上下文中配置异常映射。例如,你可以在court-servlet.xml中注册如下的异常解析器:

<bean    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

        <property name="exceptionMappings">

            <props>

                <prop key="com.wsheng.spring.service.ReservationNotAvailableException">

                           reservationNotAvailable

                </prop>

                <prop key="com.wsheng.spring.web.ReservationWebException">

                       reservationWebException

                </prop>

           <!--   <prop key="java.lang.Exception">

                      error

              </prop>

            -->

            </props>

        </property>

       <property name="defaultErrorView" value="error"/>

    </bean> 

 

          在这个异常解析器中,我们为ReserverationNotAvailableException定义了逻辑视图的名称为reservationNotAvailable。我们还可以使用<prop>元素添加任何数量的异常类,直到最后更通用的异常类:java.lang.Exception。这样,根据异常类的类型,用户得到一个与异常一致的视图。

          根据对应的视图,如果你的web应用上下文中配置了InternalResourceViewResolver,预订不可用的情况下会显示如下的reservationNotAvailable.jsp页面。

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

<html>

<head>

<title>Reservation Not Available</title>

</head>

 

<body>

Your reservation for ${exception.courtName} is not available on

<fmt:formatDate value="${exception.date}" pattern="yyyy-MM-dd" /> at

${exception.hour}:00.

</body>

</html>

 

          1. 当应用中抛出ReservationNotAvailableException 类型的Exception时,会显示reservationNotAvailable.jsp的页面。

 

          2.  在错误页面中,异常实例可以由${exception}变量访问,所以你可以在在这个异常中为用户显示更多的细节。

 

          3.  为任何未知的的异常定义一个默认的错误页面是好的做法。你可以使用<property name="defaultErrorView" value="error"/>定义默认视图,或者将一个页面映射到关键字java.lang.Exception作为做后一个映射项目,这样如果之前的项目多没有匹配,就会显示该页面:error.jsp

 

<html>

<head>

<title>Error</title>

</head>

 

<body>

An error has occurred. Please contact our administrator for details.

</body>

</html>

0
0
分享到:
评论

相关推荐

    Spring MVC--5.视图和视图解析器

    Spring MVC--5.视图和视图解析器

    spring-webmvc5.3.6 jar包.rar

    这个jar文件包含Spring MVC框架相关的所有类。  包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。  当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的...

    spring jar 包详解

    spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring 2.0的'spring-jdo.jar', 'spring-jpa.jar', 'spring-hibernate3.jar', 'spring-toplink.jar' 和 'spring-ibatis.jar' 被合并到Spring 2.5大粒度的'spring-orm.jar'中。 Spring 2.5的 'spring-test.jar' 取代...

    spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ).zip

    spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ) Gradle --spring-4 MVC Hello Worldspring 4 MVC + JSP视图+ XML配置模板,使用Gradle构建工具。使用的###1. 技术Gradle 2.0...

    Spring-Reference_zh_CN(Spring中文参考手册)

    .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8. 更新的样例应用...

    spring4.1核心包

    3. spring-beans-4.1.1.RELEASE.jar IOC的基础实现。 配置文件 创建和管理bean。 4.spring-context-4.1.1.RELEASE.jar 在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、...

    Spring.3.x企业应用开发实战(完整版).part2

    16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要功能流程描述 17.2 系统设计 17.2.1 技术...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    Spring中文帮助文档

    16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet 16.3. ViewRendererServlet 16.4. 控制器 16.4.1. AbstractController 和 PortletContentGenerator 16.4.2. 其它简单的控制器 ...

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    基于SpringMVC+Hibernate4的考勤管理系统+.zip 项目环境 系统:Windows7 X64位系统 IDE:Intellij IDEA 14.0 后端技术选型 J D K 版 本:JDK 1.8 数 据 库:Mysql 5.7 ...spring-webmvc-4.0.0.RELEASE

    Spring MVC 入门实例

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...

    springweb3.0MVC注解(附实例)

    web.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在 WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。annomvc-servlet.xml 的配置内容如下所示: ...

    spring-webmvc.zip

    Spring web MVC 框架提供了模型-视图-控制的体系结构和可以用来开发灵活、松散耦合的 web 应用程序的组件。MVC 模式导致了应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)的分离,同时提供了在这些元素之间的松散...

    用spring MVC 生成Excel和PDF.docx

    HTML页面并不总是向用户显示数据输出的最好方式,Spring支持从数据动态生成PDF或Excel文件,并使这一过程变得...另外经过测试还需要加入包spring- beans.jar,spring-context.jar,spring-web.jar,spring-webmvc.jar。

    Spring API

    前言 1. 简介 ...16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet 16.3. ViewRendererServlet 16.4. 控制器 16.4.1. AbstractController 和 PortletContentGenerator...

    Spring3.x企业应用开发实战(完整版) part1

    16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要功能流程描述 17.2 系统设计 17.2.1 技术...

    spring-mvc.xml

    idea里的mvc配置

    spring-ibatis

    -- 配置视图解析器 --&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/jsps/"&gt;&lt;/property&gt; &lt;property name="suffix" value=".jsp"&gt; ...

    Spring MVC中InternalResourceViewResolver视图解析器的默认行为.docx

    org.springframework.web.servlet.view.InternalResourceViewResolver视图解析器在默认情况下(没有对它做任何配置):默认会将类上的请求路径和方法返回的字符串组合起来得到jsp视图的完整路径

Global site tag (gtag.js) - Google Analytics