`

SpringMVC——异常处理

 
阅读更多

Spring MVC处理异常方式有以下三种:

 

1.使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver

2.实现HandlerExceptionResolver

3.使用@ExceptionHandler注解实现异常处理

 

方法一:使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver

	<!--方法一: 全局异常配置 start -->
	<bean id="exceptionResolver"
		class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">error</prop> <!-- 对应异常发生时要跳转的页面 -->
				<prop key="java.lang.Throwable">error</prop>
				<prop key="java.lang.RuntimeException">error</prop>
				<prop key="java.lang.NullPointerException">error</prop><!-- 当发生空指针异常时跳转到此页面 -->
			</props>
		</property>
	</bean>
	<!-- 全局异常配置 end -->

 

 注意:异常页面获取异常对象的名称默认是exception,也可以自己指定别名。

    指定异常的别名叫 "ex",这样jsp页面就可以通过${ex}来获取异常信息。

<property name="exceptionAttribute" value="ex"></property>

 

JSP页面如下:

	<h2>
		页面出错误了!
			如果指定异常别名:${ex} <br/>
			如果不知道异常别名:.${exception }
			<br />
		</h2>

 

Controller类中有异常代码:

@Controller
@RequestMapping("/demo")
public class ExceptionController {
	@RequestMapping("/ex.action")
	public String login(ModelMap model) {
		System.out.println("---方法1---");
		String s = null;
		s.length();
		return "success";
	}
}

 

 

通过地址:http://localhost:8008/spring_exception/demo/ex.action 访问后,得到如下结果



 

方法二:实现HandlerExceptionResolver接口

1)自定义MyExceptionHandler 实现 HandlerExceptionResolver接口

   

MyExceptionHandler.java如下 

public class MyExceptionHandler implements HandlerExceptionResolver {

	public ModelAndView resolveException(HttpServletRequest req,
			HttpServletResponse resp, Object handler, Exception ex) {
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("ex", ex); // jsp页面通过${ex}来获取
		return new ModelAndView("error", model);
	}
}

 在applicationContext.xml中进行配置

   

<bean id="myExceptionHandler" class="com.lydia.web.MyExceptionHandler" />

 

通过以上操作也可以设置。

 

 方法三:使用@ExceptionHandler注解实现异常处理

编写一个BaseController类,定义如下:

public class BaseController {
	@ExceptionHandler
	public String execute(HttpServletRequest request, Exception ex) {
		request.setAttribute("ex", ex);
		return "error";
	}
}

 

然后其他的Controller继承BaseController类即可。

@Controller
@RequestMapping("/demo")
public class ExceptionController3 extends BaseController {
	@RequestMapping("/ex3.action")
	public String login(ModelMap model){
		System.out.println("---方法3---");
		try {
			String s = "123";
			s.length();
			s.charAt(5);
		} catch (Exception e) {
			e.printStackTrace();
//			throw new MyException(e.getMessage()+"catch异常");
			model.put("msg", e.getMessage()+"---++++");
			model.addAttribute("message", e.getMessage()+"+++++++");
			return "error";
		}
		return "success";
	}
}

 

 注意:上面的代码中自定义了一个异常类MyException,并使用try..catch..来处理异常。

          使用ModelMap的addAttibute()或者put方法向错误页面传值。

 

  • 大小: 71 KB
分享到:
评论

相关推荐

    SpringMVC——异常处理机制

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

    SpringMVC——demo

    【SpringMVC——demo】 SpringMVC是Spring框架的一个核心模块,主要用于构建Web应用程序。它是一种基于模型-视图-控制器(MVC)设计模式的轻量级Java Web开发框架,能够有效地分离业务逻辑和展示逻辑,使得代码更加...

    springMVC学习——注解方式

    在实际项目中,还会涉及到更多高级特性,如拦截器、异常处理、视图解析等,这些都是SpringMVC注解方式的延伸应用。在"AnnotationTest"文件中,可能包含了实践这些概念的示例代码,进一步加深了对SpringMVC注解方式的...

    SpringMVC学习(一)——SpringMVC入门小程序

    在深入学习SpringMVC的过程中,你还将了解到拦截器(Interceptor)、异常处理、数据绑定、国际化、验证、文件上传下载等高级特性。这些知识点有助于你构建功能丰富、性能优良的Web应用。随着经验的积累,你可以结合...

    java面试——SpringMVC面试专题.zip

    8. **异常处理** 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提高代码的可维护性。 9. **RESTful风格** SpringMVC支持创建RESTful API,通过HTTP动词(GET、POST、PUT、DELETE)和URI资源定位来...

    SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

    在本教程中,我们将深入探讨如何将Spring框架...你可以根据实际需求调整配置,例如添加拦截器、过滤器、自定义异常处理等,以满足更复杂的业务场景。此外,还可以考虑使用Spring Boot来进一步简化配置,提升开发效率。

    SpringMVC精品资源-- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).zip

    SSM框架,即Spring、SpringMVC和...这个"SpringMVC精品资源-- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)"压缩包可能包含了从基础概念到实战示例的全面教程,对于学习和提升SSM框架的整合应用大有裨益。

    SpringMVC学习(十二)——SpringMVC中的拦截器

    3. `afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)`: 视图渲染后,无论是否出现异常都会调用,用于清理资源或执行其他收尾操作。 配置拦截器在Spring...

    SpringMVC简单源码实现

    6. **异常处理**: SpringMVC提供了一种优雅的方式来处理应用中的异常。通过`@ExceptionHandler`注解,可以在控制器中定义特定异常的处理方法。此外,全局异常处理器(`@ControllerAdvice`)可以捕获所有控制器的...

    SpringMVC学习资料

    在学习SpringMVC时,你可能会接触到如控制器注解、视图解析、模型数据绑定、异常处理、拦截器使用、RESTful设计原则等多个知识点。通过阅读提供的"SpringMVC学习资料",你可以深入理解这些概念,逐步掌握SpringMVC的...

    SpringMVC3.1实例源码

    SpringMVC提供了全局异常处理机制,通过@ControllerAdvice和@ExceptionHandler注解,可以集中处理所有控制器中的异常。 7. **数据绑定与验证** SpringMVC支持模型对象的数据绑定和验证,例如,使用@...

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).docx

    - **异常处理**:合理处理可能出现的各种异常情况,增强应用的健壮性。 - **性能优化**:对SQL语句进行优化,减少不必要的网络传输,提高应用响应速度。 通过SSM框架的整合,不仅可以提升开发效率,还能更好地满足...

    spring-mvc-study:SpringMVC 起步 —— Helllo World!

    深入学习SpringMVC,你还将接触到拦截器、模型数据绑定、视图重定向、异常处理、表单验证、RESTful API设计等概念。理解这些核心概念和组件将有助于你构建更复杂、更健壮的Web应用。通过实践这个"SpringMVC起步 ——...

    SpringMVC 3.1 体验

    在异常处理方面,3.1版本提供了全局异常处理器(`@ExceptionHandler`注解),允许在单个类中定义所有异常的处理逻辑,提高了代码的可维护性。 在性能优化上,SpringMVC 3.1支持异步处理,通过`@Async`注解,开发者...

    开涛Spring和SpringMVC书籍

    6. **异常处理**:学习如何在SpringMVC中定义全局和局部的异常处理器。 7. **RESTful Web服务**:介绍如何利用SpringMVC创建符合REST原则的API。 最后,《跟我学spring3(8-13).pdf》可能涵盖了更高级的主题,如...

    使用注解SpringMVC从页面导出Excel和word文档的使用的jar包——使用ExportExcel工具类.rar

    此外,你还需要确保正确处理异常,提供友好的错误提示。 总的来说,通过注解SpringMVC和ExportExcel工具类,我们可以轻松地实现在网页上导出Excel和Word文档的功能。这个过程涉及到SpringMVC的请求处理、响应设置,...

    SSM框架——项目详细搭建(Spring+SpringMVC+MyBatis + oracle)

    SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java开发Web应用时常用的三大组件。本文将深入探讨如何详细搭建一个基于...在实际开发中,还需要考虑异常处理、日志记录、安全性等多方面因素,以构建健壮的应用系统。

    基于springmvc高并发秒杀系统

    2.秒杀业务的核心:库存的处理 3.针对库存业务分析:事务(1&gt;.减内存 2&gt;.记录购买明细) 4.记录秒杀成功信息 (1)购买成功的对象 (2)成功的时间/有效期 (3)付款/发货信息 二、异常情况分析 减库存没有...

    springmvc-high-other-05.rar

    6. **异常处理**:SpringMVC提供了一种优雅的异常处理方式,允许我们在全局或特定Controller级别定义异常处理器。这有助于统一错误页面展示,提高用户体验。 7. **上传下载支持**:SpringMVC内置了处理文件上传和...

    手把手教你搭建SpringMVC框架——最小化配置

    3. **编写配置文件**:`applicationContext.xml`通常用于配置服务层(如DAO、Service),而`SpringMVC-servlet.xml`则用于配置Spring MVC的相关组件,如视图解析器、处理器映射器、异常处理器等。 4. **创建处理器...

Global site tag (gtag.js) - Google Analytics