`

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 中的拦截器与异常处理

    极客学院java中级课程,SpringMVC系列教材——SpringMVC 中的拦截器与异常处理

    基于springmvc高并发秒杀系统

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

    SpringMVC项目:ALL

    JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton

    springboot框架整合SSM案例-图书管理系统 源码分享

    SpringBoot整合Spring+SpringMVC+MyBatisPlus案例:图书管理系统 ...- 项目异常处理 - 按条件查询 —— 页面功能调整、Controller修正功能、Service修正功能 完整源码分享,喜欢的可以酌情下载,感谢下载者的支持!

    学习springmvc

    在MVC框架中,控制器(Controller)...-请求URI与请求处理方法的匹配(SpringMVC中的HandlerMapping)--请求处理方法的调用(SpringMVC中的HandlerAdapter)--类型转换问题——前后台数据的流转--数据校验--异常配置--国际化

    Spring MVC 员工管理系统

    Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    8.1.4 异常处理 247 8.2 Spring Data JPA 248 8.2.1 点睛Spring Data JPA 248 8.2.2 Spring Boot 的支持 258 8.2.3 实战 260 8.3 Spring Data REST 284 8.3.1 点睛Spring Data REST 284 8.3.2 Spring Boot 的支持 ...

    java8集合源码分析-LearningNotes:Java笔记

    、、基本概念、面向对象、基本数据类型与运算、字符串与数组、异常处理、Object 通用方法 数据结构 & 源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and ...

Global site tag (gtag.js) - Google Analytics