`

springMVC异常处理机制

阅读更多

无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛给用户去看,所以这时候进行统一的异常处理,展现一个比较友好的错误页面就显得很有必要了。

 

Spring3.0对异常的处理通过HandlerExceptionResolver来实现。

HandlerExceptionResolver有4个实现类DefaultHandlerExceptionResolverAnnotationMethodExceptionResolverResponseStatusExceptionResolverSimpleMappingExceptionResolver。 

 

Spring3.0对异常的处理主要可通过这两种方式:

一种是使用HandlerExceptionResolver接口;

一种是在@Controller处理器内部使用@ExceptionHandler注解。

使用第一种方式可以实现全局异常控制,并且Spring已经提供了一个默认的实现类SimpleMappingExceptionResolver;

使用第二种方式可以在Controller内部实现更个性化异常处理方式。 

 

优先级

 

<!-- 使用@ExceptionHandler注解的方法来处理Exception,优先级为0(最高) -->
<bean name="exceptionHandlerExceptionResolver"
	 class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
 <property name="contentNegotiationManager" ref="mvcContentNegotiationManager" />
 <property name="messageConverters" ref="messageConverters" />
 <property name="order" value="0" />
</bean>

<!-- 如果抛出的Exception类带有@ResponseStatus注解,响应返回该注解的Http状态码,优先级为1 -->
<bean name="responseStatusExceptionResolver"
	 class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver">
 <property name="order" value="1" />
</bean>

<!-- SpringMvc内部异常处理 -->
<bean name="defaultExceptionResolver"
	 class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver">
 <property name="order" value="2" />
</bean>

 

DefaultHandlerExceptionResolver:

Springmvc默认装配了DefaultHandlerExceptionResolver,它会将springmvc的异常转换成对应的响应状态码(500,404等)

对于Unchecked Exception而言,由于代码不强制捕获,往往被忽略,如果运行期产生了Unchecked Exception,而代码中又没有进行相应的捕获和处理,则我们可能不得不面对尴尬的404、500……等服务器内部错误提示页面。  

我们需要一个全面而有效的异常处理机制。目前大多数服务器也都支持在web.xml中通过<error-page>(Websphere/Weblogic)或者<error-code>(Tomcat)节点配置特定异常情况的显示页面。

 

SimpleMappingExceptionResolver的使用

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
	<!-- 定义默认的异常处理页面 -->
	<property name="defaultErrorView" value="error"/>
	<!-- 定义异常处理页面用来获取异常信息的变量名,如果不添加exceptionAttribute属性,则默认为exception -->
	<property name="exceptionAttribute" value="exception"/>
	<!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常页面名作为值 -->
	<property name="exceptionMappings">
		<props>
			<prop key="IOException">error/io.jsp</prop>
			<prop key="java.sql.SQLException">error/sql.jsp</prop>
		</props>
	</property>
</bean>

1、defaultErrorView, 当没有配置异常处理映射时,该默认视图将起作用

2、exceptionMappings 异常处理映射Property,key=“异常名称”, vlaue=异常处理视图

配置这个只能拦截Exception,404错误是拦截不了,要单独在web.xml配置,它比web.xml中配置错误页面强大的地方是可以把异常输出。

<error-page>
	<exception-type>java.lang.Exception</exception-type>
	<location>/jsp/error.jsp</location>
</error-page>
<error-page>
	<error-code>404</error-code>
	<location>/jsp/error.jsp</location>
</error-page>

 

分享到:
评论

相关推荐

    SpringMVC——异常处理机制

    目录结构 四、配置一个错误的方法 package edu.xiao;...import edu.xiao.exception.SystemExc;...import org.springframework.stereotype.Controller;...import org.springframework.web.bind.annotation....

    springmvc异常处理demo.zip

    SpringMVC中异常处理机制,简单案例,里面有详细说明以及博客说明。

    springmvc-day03.xmind

    SpringMVC的文件上传,SpringMVC的拦截器,SpringMVC异常处理机制

    SSM框架教程Spring+SpringMVC+MyBatis全覆盖_Java热门框架视频教程

    视频详细讲解,需要的小...8、SpringMVC异常处理机制 MyBatis部分: 1、MyBatis入门操作 2、MyBatis的Dao层实现方式 3、MyBatis的映射文件深入 4、MyBatis的核心文件深入 5、MyBatis的多表操作 6、MyBatis的注解开发

    SpringMVC上传下载异常处理

    本文档主要介绍了SpringMVC的ModelAndView机制,使用SpringMVC实现文件上传,下载以及全局异常处理机制

    spingmvc+mybatis+统一异常处理机制

    统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。

    Spring MVC异常处理机制示例详解

    主要给大家介绍了关于Spring MVC异常处理机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring MVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Spring MVC中异常处理的三种方式

    主要给大家介绍了关于Spring MVC中异常处理的三种方式,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring MVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Maven整合rest+SpringMvc实例

    本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行...即具有统一响应结构、 前后台数据流转机制(HTTP消息与Java对象的互相转化机制)、统一的异常处理机制、参数验证机制、Cors跨域请求机制以及鉴权机制。

    基于Mybatis+Spring+SpringMVC的SSM整合开发框架源码

    - 实现了统一的结果封装与异常处理机制,提高了系统的稳定性和可维护性。 - 完成了前后台功能的整合开发,确保了项目的高效运作。 文件类型分布: - Java类文件(.class):30个 - 第三方库文件(.jar):20个 - ...

    spring_exception异常处理

    好多项目都有容错机制 后台服务器报错后 不是讲错误信息直接发给用户 而是发送一个其他页面 你在上网的时候应该遇到过后台出错了 用户看到的页面是一个小孩在哭 提示页面找不到什么的

    Spring MVC Controller返回值及异常的统一处理方法

    主要给大家介绍了关于Spring MVC Controller返回值及异常的统一处理方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring MVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    04.SpringMVC.md

    同时,Java还提供了自动内存管理和异常处理机制,使开发人员能够更轻松地编写高质量的代码。 总之,Java是一种功能强大、易学易用、具有广泛应用和强大跨平台特性的编程语言。它的设计目标是提供一种高效的开发工具...

    flylib-boot:spring boo应用的通用架构(二进制异常处理等机制)

    flylib-boot是针对性的springboot内置的程序的基础框架,专门用于构建程序里的特定统一异常处理 功能 包含一个Spring Boot的一些常见的基础组件的设置 针对Handler的变量的异常处理(处理所有Controller里的Handler...

    java面试常用知识点.docx

    Java基础:变量、数据类型、运算符、条件语句、循环语句、数组、集合、异常处理等 面向对象:类、继承、多态、包、接口、抽象类、泛型等 异常处理:try-catch-finally、异常分类及处理、自定义异常等 线程:线程创建...

    Spring MVC 员工管理系统

    在这之前,DispatcherServlet必须能够凭借请求信息(URL或请求参数等)按照某种机制找到请求对应的处理器,DispatcherServlet是通过垂询HandlerMapping完成这一工作的; ③ 当DispatcherServlet从HandlerMapping中...

    Java面试宝典PLUS.pdf

    包括JavaSE基础(多态、异常处理、常用API、数据类型、IO操作、集合、多线程和并发库、内部类)、JavaSE高级(反射、动态代理、设计模式&回收机制、加载器、JVM基础、GC基础)、JavaWeb基础(JDBC技术、HTTP协议、...

    shiro注解版

    -- 异常处理,权限注解会抛出异常,根据异常返回相应页面 --&gt; class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"&gt; ...

    spring-mvc-examples:Spring MVC使用示例代码,涵盖多个方面的内容

    Spring MVC 使用示例 通过简单的示例演示Spring MVC的强大功能。 项目内容 ...异常处理 运行项目 $ cd spring-mvc-example $ mvn tomcat7:run [-Dmaven.tomcat.port=] (默认是8080) 访问下面地址:

    Spring4Mybatis:这是一个Spring MVC + Mybatis 的项目,不仅仅只是简单的demo或是增删改查,她将含括很多的方面:尽量抽取basedao,baseService公共部分,做出一个简单的framework,为以后分布式开发提供基础

    异常处理(ExceptionHandler) JMS消息处理机制 Mybatis与Spring的整合,并且 Junit Log4j SpringMVC整合页面所有操作,form,file,pic,input,radio,checkbox... ##遇到问题: Date类型丢失时分秒--&gt;把date...

Global site tag (gtag.js) - Google Analytics