《Java EE框架整合开发入门到实战(第2版)》 课件 第12章 统一异常处理_第1页
《Java EE框架整合开发入门到实战(第2版)》 课件 第12章 统一异常处理_第2页
《Java EE框架整合开发入门到实战(第2版)》 课件 第12章 统一异常处理_第3页
《Java EE框架整合开发入门到实战(第2版)》 课件 第12章 统一异常处理_第4页
《Java EE框架整合开发入门到实战(第2版)》 课件 第12章 统一异常处理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章统一异常处理学习目的与要求本章重点讲解如何使用SpringMVC框架进行异常的统一处理。通过本章的学习,读者需要掌握SpringMVC框架统一异常处理的使用方法。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社目录12.1示例介绍12.2SimpleMappingExceptionResolver类12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.1示例介绍为了验证SpringMVC框架的三种异常处理方式的实际效果,需要开发一个测试应用ch12,从Dao层、Service层、Controller层分别抛出不同的异常(SQLException、自定义异常和未知异常),然后分别集成三种方式进行异常处理,进而比较三种方式的优缺点。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社1.创建应用ch12创建应用ch12,并导入SpringMVC相关的JAR包,包括Spring的4个基础JAR包、SpringCommonsLoggingBridge对应的JAR包spring-jcl-6.0.0.jar、AOP实现JAR包spring-aop-6.0.0.jar、DispatcherServlet接口所依赖的性能监控包(micrometer-observation.jar和micrometer-commons.jar)以及两个Web相关的JAR包。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社2.创建自定义异常类在应用ch12的src/main/java目录下,创建包exception,并在该包中创建自定义异常类MyException。publicclassMyExceptionextendsException{ privatestaticfinallongserialVersionUID=1L; publicMyException(){ super(); } publicMyException(Stringmessage){ super(message); }}《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社3.创建Dao层在应用ch12的src/main/java目录下,创建dao包,并在该包中创建TestExceptionDao类,该类中定义三个方法,分别抛出“数据库异常”、“自定义异常”以及“未知异常”。@RepositorypublicclassTestExceptionDao{ publicvoiddaodb()throwsException{ thrownewSQLException("Dao中数据库异常"); } publicvoiddaomy()throwsException{ thrownewMyException("Dao中自定义异常"); } publicvoiddaono()throwsException{ thrownewException("Dao中未知异常"); }}《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社4.Service层在应用ch12的src/main/java目录下,创建service包,并在该包中创建TestExceptionService接口和TestExceptionServiceImpl实现类,该接口中定义六个方法,其中有三个方法调用dao层中的方法,有三个是service层的方法。Service层的方法是为演示service层的“数据库异常”、“自定义异常”以及“未知异常”而定义的。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社5.创建控制器类在应用ch12的src/main/java目录下,创建controller包,并在该包中创建TestExceptionController控制器类。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社6.创建View层在应用ch12的src/main/webapp/目录下,创建应用的首页面index.jsp。<body><h1>所有的异常处理演示示例</h1><h3><ahref="daodb">处理dao中数据库异常</a></h3><h3><ahref="daomy">处理dao中自定义异常</a></h3><h3><ahref="daono">处理dao未知错误</a></h3><hr><h3><ahref="servicedb">处理service中数据库异常</a></h3><h3><ahref="servicemy">处理service中自定义异常</a></h3><h3><ahref="serviceno">处理service未知错误</a></h3><hr><h3><ahref="db">处理controller中数据库异常</a></h3><h3><ahref="my">处理controller中自定义异常</a></h3><h3><ahref="no">处理controller未知错误</a></h3><hr><!--web.xml中配置404--><h3><ahref="404">404错误</a></h3></body>在应用ch12的src/main/webapp/WEB-INF/目录下,创建jsp文件夹,并在该文件夹中创建View层的4个JSP页面。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社7.web.xml对于UncheckedException而言,由于代码不强制捕获,往往被忽略,如果运行期产生了UncheckedException,而代码中又没有进行相应的捕获和处理,则可能不得不面对404、500……等服务器内部错误提示页面。所以在web.xml文件中添加了全局异常404处理,具体代码如下:<error><error-code>404</error-code><location>/WEB-INF/jsp/404.jsp</location></error>《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社目录12.1示例介绍12.2SimpleMappingExceptionResolver类12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.2SimpleMappingExceptionResolver类SimpleMappingExceptionResolver类是接口HandlerExceptionResolver的一个实现。使用SimpleMappingExceptionResolver类统一异常处理时,需要在配置文件中,提前配置异常类和View的对应关系。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.2SimpleMappingExceptionResolver类

<!--配置SimpleMappingExceptionResolver(异常类与View的对应关系)--> <beanclass="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!--定义默认的异常处理页面,本实例是Exception异常发生时找到error.jsp-->

<propertyname="defaultErrorView"value="error"></property> <!--定义需要特殊处理的异常,用类名或完全路径名作为key,异常页名作为值--> <propertyname="exceptionMappings"> <props>

<propkey="exception.MyException">my-error</prop> <propkey="java.sql.SQLException">sql-error</prop> <!--这里还可以继续扩展对不同异常类型的处理--> </props> </property> </bean>配置完成后,就可以通过SimpleMappingExceptionResolver异常处理器统一处理12.1节中的异常。发布应用ch12到Tomcat服务器,并启动服务器后,可通过地址http://localhost:8080/ch12/测试应用。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社目录12.1示例介绍12.2SimpleMappingExceptionResolver类12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.3HandlerExceptionResolver接口HandlerExceptionResolver接口用于解析请求处理过程中所产生的异常。开发者可以开发该接口的实现类,重写publicModelAndViewresolveException(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3)方法,进行SpringMVC应用的异常统一处理(不同异常转向不同页面)。在ch12应用的exception包中,创建一个HandlerExceptionResolver接口的实现类MyExceptionHandler。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.3HandlerExceptionResolver接口publicclassMyExceptionHandlerimplementsHandlerExceptionResolver{ @Override publicModelAndViewresolveException(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3){ //根据不同异常转向不同页面(统一处理),即异常与view的对应关系 if(arg3instanceofMyException){ returnnewModelAndView("my-error"); }elseif(arg3instanceofSQLException){ returnnewModelAndView("sql-error"); }else{ returnnewModelAndView("error"); } }}需要将异常统一处理的实现类MyExceptionHandler在配置文件中托管给SpringMVC框架才能进行异常的统一处理。配置代码为<beanclass="exception.MyExceptionHandler"/>。发布应用ch12到Tomcat服务器,并启动服务器后,可通过地址http://localhost:8080/ch12/测试应用。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社目录12.1示例介绍12.2SimpleMappingExceptionResolver类12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.4@ExceptionHandler注解如果在控制器Controller中有一个使用@ExceptionHandler注解修饰的方法,那么当Controller的任何方法抛出异常时,都由该方法统一处理异常。因此,本示例可以创建一个抽象类BaseController(父类),并在类中使用@ExceptionHandler注解声明异常统一处理的方法。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.4@ExceptionHandler注解publicabstractclassBaseController{ /**基于@ExceptionHandler异常处理*/ @ExceptionHandlerpublicStringexception(Exceptionex){//根据不同异常转向不同页面,即异常与View的对应关系

if(exinstanceofSQLException){ return"sql-error";}elseif(exinstanceofMyException){ return"my-error";}else{ return"error";}}}@ControllerpublicclassTestExceptionControllerextendsBaseController{……}使用@ExceptionHandler注解声明统一处理异常时,不需要配置任何与异常处理相关的信息。《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社目录12.1示例介绍12.2SimpleMappingExceptionResolver类12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合开发入门到实战》陈恒

主编,清华大学出版社12.5@ControllerAdvi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论