`
Josh_Persistence
  • 浏览: 1653598 次
  • 性别: 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
分享到:
评论

相关推荐

    Spring3.X @MVC - (一)重要的配置文件

    在Spring 3.x的MVC框架中,配置文件起着至关重要的作用,它们定义了Spring MVC应用程序的行为和组件。这篇博客“Spring3.X @MVC - (一)重要的配置文件”可能探讨了如何设置和理解这些配置文件,以及它们如何与...

    spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE

    它为Web开发提供了一种强大且灵活的模型绑定、数据验证、异常处理和视图解析机制。在Spring Web MVC中,DispatcherServlet是核心组件,它负责接收HTTP请求,根据请求映射找到对应的处理器(Controller),并调用...

    org.springframework.web.servlet-3.1.0.M2.jar

    Spring MVC是Spring框架中的模型-视图-控制器(Model-View-Controller)实现,它为构建Web应用程序提供了一种松耦合、可测试和高效的方式。Spring MVC通过DispatcherServlet作为核心控制器,协调其他组件,如处理器...

    org.springframework.web.servlet-3.0.5.RELEASE.jar

    Spring MVC采用模型-视图-控制器(MVC)设计模式,将应用程序的业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护性。它通过DispatcherServlet作为前端控制器,负责请求分发,并通过HandlerMapping将...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...

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

    在Spring MVC框架中,视图和视图解析器是实现MVC模式中“V”(View)部分的关键组件。它们负责将处理完的数据转化为用户可以理解的格式,并展示在浏览器上。视图解析器则是连接控制器与视图的桥梁,它负责根据返回的...

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    Spring MVC 是 Spring 框架的一部分,专门用于构建 Web 应用的模型-视图-控制器架构。`spring-mvc-3.1.xsd` 文件定义了与 MVC 相关的配置元素,如控制器(Controller)、视图解析器(View Resolver)、模型-视图...

    org.springframework.web.servlet-3.1.0.RELEASE.jar.zip

    首先,Spring Web MVC作为Spring Framework的一部分,主要负责Web应用程序的模型-视图-控制器(MVC)架构实现。它提供了灵活的请求处理机制,支持多种视图技术,并通过依赖注入(DI)和面向切面编程(AOP)提供了...

    org.springframework.web.servlet-3.0.0.M4.jar

    5. **ModelAndView**:这是Spring MVC中一个重要的概念,它包含了模型数据和视图信息。模型数据用于在视图中显示,视图信息则决定了最终如何呈现页面。 6. **Aspect-Oriented Programming (AOP)**:Spring MVC充分...

    spring-mvc-4.2.xsd.zip

    它提供了模型-视图-控制器(MVC)架构,使得开发者可以将业务逻辑、数据展示和用户界面分离,从而实现更清晰、可维护的代码结构。在Spring MVC中,`xsd`文件扮演着重要的角色,它们定义了Spring MVC配置的XML Schema...

    Spring+3.x企业应用开发实战光盘源码,保证可用

    2. **MVC(模型-视图-控制器)**:Spring 3.x的Web MVC框架提供了更强大的视图解析和数据绑定能力,以及更灵活的配置方式,如基于注解的Controller和HandlerMapping。 3. **JSR-303/JSR-349(Bean验证)**:Spring ...

    Spring.Web.Mvc3.zip bug修改版

    在.NET开发领域,Spring.Web.Mvc3是一个非常重要的框架,它为基于ASP.NET MVC的应用程序提供了强大的依赖注入(DI)和面向方面的编程(AOP)支持。这个“Spring.Web.Mvc3.zip bug修改版”可能是一个修复了原版Spring...

    spring-webmvc-5.0.9 jar包、源码和javadoc

    Spring Web MVC是Spring框架的核心模块之一,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。在Spring 5.0.9这个版本中,它延续了Spring对开发者友好、灵活且高性能的设计原则,为开发人员提供了强大的...

    Spring3.x MVC 例子

    Spring3.x MVC是Java开发中广泛使用的一个框架,它提供了模型-视图-控制器(MVC)架构,用于构建高效、可维护的Web应用程序。在本教程中,我们将深入探讨Spring3.x MVC的关键特性,通用配置,以及在企业级项目中的...

    spring_MVC源码

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

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    首先,Spring MVC的核心设计理念是模型-视图-控制器(Model-View-Controller)架构模式。在该模式中,模型负责业务逻辑处理,视图负责展示数据,而控制器则作为模型和视图之间的桥梁,接收用户请求并调用相应的服务...

    spring MVC配置详解

    ViewResolver 是 Spring MVC 框架中负责将模型数据渲染到视图中的组件。我们可以使用 InternalResourceViewResolver 或其他视图解析器来配置 ViewResolver。 七、总结 Spring MVC 是一个功能强大且灵活的 Web 框架...

    spring-webmvc5.3.6 jar包.rar

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

    Spring5.1.4核心jar包,包括mvc,webmvc

    它基于模型-视图-控制器(MVC)设计模式,帮助开发者将业务逻辑、数据处理和用户界面分离开来,使得代码更加清晰和可维护。以下是一些关于Spring 5.1.4和Spring MVC的关键知识点: 1. **依赖注入(Dependency ...

    spring-web.jar spring-webmvc.jar

    Spring框架是Java开发中不可或缺的一部分,它为构建高效、可重用的Web应用程序提供了强大的支持。在本讨论中,我们将深入探讨两个核心组件——`spring-web.jar`和`spring-webmvc.jar`,它们在Spring MVC框架中扮演着...

Global site tag (gtag.js) - Google Analytics