SpringMVC自定义拦截器与异常处理
来源:互联网 发布:php特殊字符转义函数 编辑:程序博客网 时间:2024/05/21 10:46
一、自定义拦截器
Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口。
自定义拦截器可分为两步:1.自定义实现类实现 HandlerInterceptor接口;2.在springmvc配置文件中配置相对应的拦截器
1.自定义实现类实现 HandlerInterceptor接口;
创建一个普通类,实现HandlerInterceptor接口,不要忘记加上@Controller注解;实现接口中的方法:
preHandle():该方法在目标方法之前被调用,
若返回值为true,则继续调用后续的拦截器和目标方法
若返回值为false,则不会再调用后续的拦截器和目标方法
可以考虑做权限,日志或者事务等!
postHandle():调用目标方法之后,但渲染视图之前被调用
可以对请求域中的属性或者视图做出修改!
afterCompletion():渲染视图之后被调用,
可以在该方法中进行一些资源清理的操作。
2.在springmvc配置文件中配置相对应的拦截器
<mvc:interceptors><!--配置自定义拦截器 ,所有的路径都拦截 --><bean class="com.neuedu.controller.Myinter"></bean><!-- class为自己创建的实现了 HandlerInterceptor接口类的全类名--></mvc:interceptors>执行顺序:preHandle方法——请求映射的方法——postHandle方法——afterCompletion方法
多拦截器
创建两个类,分别实现HandlerInterceptor接口,不要忘记加上@Controller注解;实现接口中的方法
配置springmvc.xml文件
<mvc:interceptors><!-- 第一层拦截器,拦截所有请求 --><bean class="com.neuedu.controller.Myinter"></bean><mvc:interceptor ><!-- 第二层拦截器 --><mvc:mapping path="/abc/*"/><!-- mapping 后的path是只拦截该路径 --><mvc:exclude-mapping path="/abc/testInterceptor"/><!-- exclude-mapping 是除了此路径,其他的路径都拦截 。只能与mvc:mapping连用--><bean class="com.neuedu.controller.SecondInterceptor"></bean></mvc:interceptor></mvc:interceptors>执行顺序:
二、SpringMVC的异常处理
springMVC处理事件时,有可能发生异常,这时我们要进行异常处理。
异常处理分为两步:1.配置springmvc.xml文件;2.写异常映射。
1.配置springmvc.xml文件;
在springmvc.xml文件中加入<mvc:annotation-driven>标签;
2.写异常映射:
在当前Handler中定义由@ExceptionHandler注解修饰的方法,用于处理异常信息!
@ExceptionHandler(value={ArithmeticException.class})public ModelAndView testException(Exception ex){ModelAndView mv=new ModelAndView();mv.setViewName("error");mv.addObject("cuowu", ex);return mv;}注意:
1.@ExceptionHandler方法修饰的入参中可以加入Exception类型的参数,该参数即对应发生的异常信息
2.@ExceptionHandler方法的入参中不能传入Map.若希望把异常信息传到页面上,需要使用ModelAndView作为方法的返回值。
3.@ExceptionHandler 注解定义的方法优先级问题:
例如发 生的是NullPointerException,但是声明的异常有 RuntimeException 和 Exception,
此候会根据异常的最近继承关系找到继承深度最浅的那个@ExceptionHandler 注解方法,即标记了 RuntimeException 的方法
也可以自定义类,要加@ControllerAdvice
@ControllerAdvicepublic class HandleException {@ExceptionHandler()public ModelAndView testException(Exception ex){ModelAndView mv=new ModelAndView();mv.setViewName("error");mv.addObject("cuowu", ex);return mv;}}
基于配置的异常处理:
如果希望对所有异常进行统一处理,可以使用 SimpleMappingExceptionResolver,它将异常类名映射为 视图名,即发生异常时使用对应的视图报告异常。
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><!-- exceptionAttribute用于指定异常对象在request域中的键(相当于<String,Object>中的Object),value用于指定用字符串代表键(相当于String) --><property name="exceptionAttribute" value="ex"></property><property name="exceptionMappings"><props><!--key:指定异常的全类名,value:出现错误后要转发到的页面! --><prop key="java.lang.ArithmeticException">error</prop></props></property></bean>
- SpringMVC自定义拦截器与异常处理
- SpringMVC自定义拦截器与异常处理
- 四.SpringMVC中的 拦截器与异常处理
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
- SpringMVC:异常处理机制与自定义异常处理
- springmvc 自定义异常处理
- springmvc异常拦截器
- springMVC 自定义拦截器
- springmvc自定义拦截器
- SpringMVC 自定义拦截器
- springmvc自定义拦截器
- springMVC自定义拦截器
- springMVC 自定义拦截器
- springMVC 自定义拦截器
- SpringMvc自定义拦截器
- SpringMVC自定义拦截器
- SpringMvc自定义拦截器
- EventBus的Sticky粘性事件
- Rxjava前哨——观察者设计模式
- Perfect Service UVA
- linux基本命令
- ansible(一)简单的东西应该简单,复杂的才能成功
- SpringMVC自定义拦截器与异常处理
- 笔试笔记(七)
- ubuntu安装必要的软件
- settings.db应用 笔记:
- 使用wireshark抓取视频流中的H264协议,并分析
- HDU6146 Pokémon GO (2017百度之星程序设计大赛
- 剑指Offer—40—数组中只出现一次的数字
- Docker:Swarm + Stack 一站式部署容器集群
- linux 下使用 tc 模拟网络延迟和丢包