SpringMvc中出现异常的位置主要有以下地方:
所以在很多地方都会出现异常,所以对于异常,一个集中出来处理,因此要创建异常处理器类,来集中处理异常,其内部是Aop思想,
然后这个类上面需要使用@RestControlAdvice注解,
在处理异常的方法上面需要加上@Exceptionhandle注解
总的来说就是这样:
但这是一种情况,因为异常有很多种,所以也要分情况处理异常。
一般来说分为业务异常,系统异常和其他异常:
所以,对于这些异常要怎么处理呢?先在itheima包下创建一个execption也就是异常包,然后再在这个包下创建异常类:BusinessExecption(处理业务异常的类),SystemExecption(处理系统异常的类),这两个类都要继承RuntimExecption,在这个类里面需要声明一个变量code就是异常编码,而且有一个Code类中定义了编码常量。然后根据需要重写RuntimeExecption中的构造方法,这些构造方法在后面,创建异常时会用到。
Code常量中的编码:
然后需要在异常处理器类中定义两种异常格子对应的处理异常方法:
之后再去正常编码中模拟两种异常的出现,看看会怎处理:
两种异常处理结果对比:
这个前端结合因为,一开始访问地址没写对,localhost后面没加pages,所以后面莫名其妙的报错,搞了两天导致后面就没听,所以跳过。
//
然后是拦截器,拦截器和过滤器很相似都是当有访问请求访问资源时,进行拦截(拦截时会进行一些增强操作,或者其他操作)
所以这个时候,就有一个问题需要思考:拦截器和过滤器之间的区别是什么? 归属不同:Filter属于Servlet技术(tomcat中),Interceptor属于SpringMVC技术(servlet中) 拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强 然后拦截器要怎么操作呢? 首先需要创建一个拦截器类,这个类上面要加上@Component让这个类能被SpringMvc加载,然后让类实现HandlerInterceptor接口,重写接口中的三个方法。这三个方法是re,post,after,分别代表资源处理之前,和资源处理之后,以及任务结束之后(大概是这个意思哈哈),第一个方法中的return true这个设置很重要。
然后就是配置拦截器类配置类,这个类在我们之前设置静态资源准许访问的时候已经创建了,而且其中的方法都差不多,一个是addResources。。,一个是addIntercpet,
步骤3:SpringMVC添加SpringMvcSupport包扫描
还有一种在SpringMvcconfig类中写这个拦截器的配置类:简化SpringMvcSupport的编写,但是有侵略性
然后是拦截器的执行流程:
拦截器的参数,了解一下前置方法就行:
如果需要多个拦截器,那么就要创建对应多个拦截类:
然后再在拦截器配置类或者那个springmvccofig中配置拦截的路径啥的
那多个拦截器,执行顺序是怎么样的,好像是在拦截器配置类中先加载的先执行(这是对pre方法),post和after方法相反,
标签:拦截器,SpringMvc,创建,前端,然后,处理,过滤器,异常 From: https://www.cnblogs.com/y-258/p/16999802.html