博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC 拦截器 异常
阅读量:5266 次
发布时间:2019-06-14

本文共 1918 字,大约阅读时间需要 6 分钟。

27.自定义拦截器

Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必 须实现HandlerInterceptor接口
1.自定义实现类实现 HandlerInterceptor接口
2.在springmvc配置文件中配置相对应的拦截器
<mvc:interceptors>
<!--配置自定义拦截器 ,所有的路径都拦截 -->
<bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
</mvc:interceptors>
– preHandle():该方法在目标方法之前被调用,
若返回值为true,则继续调用后续的拦截器和目标方法
若返回值为false,则不会再调用后续的拦截器和目标方法
可以考虑做权限,日志或者事务等!
– postHandle():调用目标方法之后,但渲染视图之前被调用
可以对请求域中的属性或者视图做出修改!
– afterCompletion():渲染视图之后被调用,
可以在该方法中进行一些资源清理的操作。
关于拦截器的配置:
<mvc:interceptors>
<!--配置自定义拦截器 ,所有的路径都拦截 -->
<bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
<!-- 关于拦截器的配置问题 ,可以通过<mvc:interceptor>来配置使用哪个拦截器来【不】拦截的路径-->
<mvc:interceptor>
<!-- 用<mvc:mapping>标签指定要拦截的路径 -->
<mvc:mapping path="/employ"/>
<!-- 指定使用哪个拦截器进行拦截 -->
<bean class="com.neuedu.springmvc.filter.SecondFilter"></bean>
</mvc:interceptor>
</mvc:interceptors>
26.SpringMVC的异常处理:

1.加上<mvc:annotation-driven>标签:

2.在当前Handler中定义由@ExceptionHandler注解修饰的方法,用于处理异常信息!
注意:
1.@ExceptionHandler方法修饰的入参中可以加入Exception类型的参数,该参数即对应发生的异常信息
2.@ExceptionHandler方法的入参中不能传入Map.若希望把异常信息传到页面上,需要使用ModelAndView作为方法的返回值。
3.@ExceptionHandler 注解定义的方法优先级问题:
例如发 生的是NullPointerException,但是声明的异常有 RuntimeException 和 Exception,此候会根据异常的最近 继承关系找到继承深度最浅的那个 @ExceptionHandler 注解方法,即标记了 RuntimeException 的方法
4.ExceptionHandlerMethodResolver 内部若找不 到@ExceptionHandler 注解的话,会找@ControllerAdvice 中的@ExceptionHandler 注解方法
27.基于配置的异常处理:
如果希望对所有异常进行统一处理,可以使用 SimpleMappingExceptionResolver,它将异常类名映射为 视图名,即发生异常时使用对应的视图报告异常
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 指定在在request域中获取异常信息所需要的key:即ex -->
<property name="exceptionAttribute" value="ex"></property>
<!-- 指定异常映射 -->
<property name="exceptionMappings">
<props>
<!-- 由prop标签的key属性指定发生异常的全类名,由值指定出现异常去哪个页面! -->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
</bean>

转载于:https://www.cnblogs.com/zhaosong-0102/p/7425168.html

你可能感兴趣的文章
setTimeout和setInterval
查看>>
函数柯里化
查看>>
基础算法
查看>>
后台管理系统的权限问题
查看>>
vscode保存文件时自动删除行尾空格
查看>>
ionic 导航
查看>>
js日期对象转字符串各方法汇总
查看>>
vscode多光标编辑(MAC)
查看>>
如何快速掌握官方提供的java API文档使用技巧
查看>>
为这么在C语言中不能使用中文用作标识符,而在java中可以呢?
查看>>
什么是异常?解释“抛出”和“捕获”的含义
查看>>
java是如何处理异常的?
查看>>
声明变量和定义变量的区别是什么?
查看>>
java-基础算法题1-利用for求和
查看>>
微信小程序云函数中管理短信验证码的完整SDK工具
查看>>
微信小程序云开发,快速生成短信验证码
查看>>
微信小程序注册、登录小功能都在这
查看>>
教你实现3种常用验证码功能,附源码
查看>>
如何在网站中添加手机短信验证码注册功能?
查看>>
教你三分钟开发开发java短信验证码
查看>>