SpringMVC利用注解实现异常处理

在项目中如何处理出现的异常,以前通常的作法是继承Exception或实现Runnable接口来封装自定义异常,然后在项目代码中通过try...catch语句块来捕获到出现的异常,封装到我们自己定义的异常类中。如果项目中使用的SpringMVC框架的话,这里介绍另外一种也比较方便的异常处理方法,本人还是比较喜欢这种处理方式。这里用到的是ExceptionHandler这个注解。

1、首先新建一个名为BaseController的抽象类;

public abstract class BaseController
{

@ExceptionHandler

public String
exception(HttpServletRequest request, Exception e)
{

// 根据不同的异常类型进行不同处理

if(e instanceof SQLException)
{

String s = "数据库异常" ;

request.setAttribute( "exceptionMessage", s);

return "error";

}else if(e instanceof IOException){

String s = "IO异常";

request.setAttribute( "exceptionMessage", s);

return "error";

}

else return "error";

}

}

该方法需要定义在Controller内部,然后创建一个方法并用@ExceptionHandler注解来修饰用来处理异常,这个方法基本和 @RequestMapping修饰的方法差不多,只是可以多一个类型为Exception的参数,@ExceptionHandler中可以添加一个或多个异常的类型,如果为空的话则认为可以触发所有的异常类型错误,返回值为视图名。

2、以后让每个controller类继承定义的BaseController即可;

@Controller

@RequestMapping(value="/login" )

public class LoginController extends BaseController{

private Logger logger =
Logger.getLogger(LoginController.class);

private JsonGenerator jsonGenerator = null;

@Autowired

IUserService userService;

@RequestMapping(value= "/login")

public String
login() throws Exception{

logger.info( "login....");

//这里模拟抛出一个SQL异常信息

throw new SQLException();

}

}

3、最后定义一个error.jsp页面

<%@ page language ="java" contentType="text/html;
charset=utf-8"

pageEncoding="utf-8"%>

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

<html>

<body >

${exceptionMessage}

</body >

</html>

运行效果:

当然如果习惯用配置文件的伙伴,也可以通过Spring配置文件来实现。

时间: 2024-10-20 20:40:25

SpringMVC利用注解实现异常处理的相关文章

【SpringMVC学习07】SpringMVC中的统一异常处理

我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.在开发中,不管是dao层.service层还是controller层,都有可能抛出异常,在springmvc中,能将所有类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护.这篇博文主要总结一下SpringMVC中如何统一处理异常. 1. 异常处理思路 首先来看一下在spr

Spring学习笔记-springMVC基于注解的控制器(基本概念)

在spring2.5以前的版本中,实现一个mvc的Controller的唯一方法就是实现Controller接口,一个控制器只能响应一个客户端请求,在2.5以后的版本中,spring引入了注解,利用注解简化配置文件,利用注解实现bean的声明和依赖注入(DI),注解也同样被引入到spring的web模块springMVC中. 使用基于注解的控制器有两个优点 第一:一个控制器可以处理多个动作,而不是像以前那样一个控制器只能处理一个请求 第二:省略的在配置文件中对bean的声明和依赖注入,显著提高开

springMVC的注解详解

springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@Request

SpringMVC的注解方式

mvc-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springf

springMvc的注解注入方式

springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你的脚印,欢迎评论!希望能互相学习. 1,首先定义三个常用的注解Service,Autowired,Contrller:(主要的解释都在代码中有,在这里就不多陈述) Service: package com.lishun.A

利用注解和反射将map转化成bean

一.java注解 java注解相关的类放在 java.lang.annotation 包下,其主要内容包含4个元注解和其中两个元注解的枚举类值,相对比较简单,从jdk问答即可了解 4个元注解: Documented:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化.应使用此类型来注释这些类型的声明:其注释会影响由其客户端注释的元素的使用.如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分. Inherited:指示注释类型被自动继

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

springMVC基于注解的控制器

springMVC基于注解的控制器的优点有两个: 1.控制器可以处理多个动作,这就允许将相关操作写在一个类中. 2.控制器的请求映射不需要存储在配置文件中.使用requestMapping注释类型,可以对一个方法进行请求处理. 接下来介绍两个最重要的注释类型: 一.controller注释类型 这种注释类型用于指示Spring类的实例是一个实例: import org.springframework.stereotype; public class CustemerController{ //m

Spring框架中利用注解进行自动装配的环境配置步骤和常见问题

第1步:配置XML文件 ,如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spring