SpringMVC(八):异常处理与拦截器

异常处理与拦截器

1、异常处理

1.1 在controller中抛出异常

1.2 创建一个普通类,当做全局异常处理类

全局异常处理类的上面加入@ControllerAdvice:给控制器增加功能的异常处理功能,必须让框架知道这个注解所在的包名,需要在springmvc配置文件声明组件扫描器。详情见1.4。
在异常处理类的方法上面加入 @ExceptionHandler(value= 异常类型.class),表示发生这个异常的时候,用此方法处理,当不写value属性的时候,就是处理其他的异常。
处理异常的方法和控制器的方法一样的,可以有0个参数,也可以有多个参数。返回值可以是modelandview,string,void

1.3 在异常类中做异常处理

异常发生处理的逻辑:
1、需要把异常记录下来,记录到数据库,日志文件
记录发生的时间,那个方法发生的,异常错误的内容。
2、发送通知,把异常的信息通过邮件,微信,短信发送给相关人员
3、给用户友好的提示

1.4 配置springmvc文件

1)组件扫描器,扫描的是@ControllerAdvice所在的包名
2)声明注解驱动
配置springmvc的文件中的两个步骤如下:

  <context:component-scan base-package="异常处理类的路径"/>
    <mvc:annotation-driven/>

2、拦截器

1、要使用拦截器首先应该在springmvc中加入配置标签,如下所示。

 <mvc:interceptors>
        <!--声明第一个拦截器-->
        <mvc:interceptor>
            <!--指定拦截的请求uri地址
            path:就是uri地址,可以使用通配符
            **:表示任意的字符,文件或者多级目录和目录中的文件-->
            <mvc:mapping path="/**"/>
            <!--声明拦截器对象-->
            <bean class="拦截器对象的路径r"/>
        </mvc:interceptor>
    </mvc:interceptors>

2、拦截器的处理类要继承HandlerInterceptor类。并重写里面的预处理方法或者后处理方法。

2.1 预处理方法

是在控制器方法之前先执行的用户的请求首先到达此方法,在这个方法中可以获取请求的信息,验证请求是否符合要求,可以验证用户是否登录,是否有权限访问链接地址,如果验证失败,我们会截断请求,请求不能被处理 如果验证成功,可以放行请求,此时的控制器方法才能执行。
返回值布尔类型的。方法的参数可以是HttpServletRequest,HttpServletResponse, Object handler。

2.2后处理方法

后处理方法的参数有:
request
response
handler:被拦截的处理器对象mycontroller
modelAndView:处理器方法的返回值
特点:
1、在处理器的方法之后执行的
2、能够获取到处理器方法的返回值modelandview,可以修改modelandview中的数据和视图,可以影响到最后的执行的结果
3、主要是对原来的执行结果做二次修正。

2.3最后处理的方法

1、在请求处理完成后执行的,就是在视图已经处理完成后,就是已经执行了forward,默认为请求处理完成。
2、一般在做资源回收工作的,程序中请求过程中创建了一些对象,在这里可以删除,把内存清空,内存收回。
参数有: request ,response,handler,exception

猜你喜欢

转载自blog.csdn.net/qq_41984117/article/details/109313806