SpringMVC 拦截器 异常

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注解修饰的方法,用于处理异常信息!
注意:
[email protected]方法修饰的入参中可以加入Exception类型的参数,该参数即对应发生的异常信息
[email protected]方法的入参中不能传入Map.若希望把异常信息传到页面上,需要使用ModelAndView作为方法的返回值。

[email protected] 注解定义的方法优先级问题:
例如发 生的是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>

时间: 2024-08-18 10:03:29

SpringMVC 拦截器 异常的相关文章

SpringMVC拦截器(实现登录验证拦截器)

本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 St

SpringMVC拦截器+Spring自定义注解实现权限验证

设计思路 主要针对需要登录后操作的接口进行校验.接入层在对外暴露接口后,网页.APP.第三方等等途径进行访问接口.用户请求首先会被SpringMVC拦截器拦截到,在拦截器里第一步就是需要校验用户的登录身份(由于是分布式系统这里采用的是userId+accessToken方式来校验),登录校验通过之后再进行用户权限校验,此时会自动拦截@AuthValidate注解的method(核心),如果权限校验失败则抛出权限不足异常,否则校验通过之后再执行具体接口并返回结果. 1.自定义注解 1 packag

springmvc拦截器启动报错

今天搞springmvc拦截器 启动项目异常 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is o

springboot+springmvc拦截器做登录拦截

springboot+springmvc拦截器做登录拦截 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration 实现 WebMvcConfigurer 接口,注册拦截器 ResourceBundle 加载 properties文件数据,配置不进行拦截的路径 LoginInterceptor package com.ytkj.smart_sand.system.interceptor; import com.

SpringMVC框架(3)--文件上传与SpringMVC拦截器

SpringMVC文件上传原理: SpringMVC文件上传步骤: 1.pom.xml中添加坐标 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <g

SpringMVC 拦截器理解

SpringMVC 配置拦截器 1. 作为拦截器当然是为了拦截 (这不是废话嘛) 那拦截是为了干嘛? 它可以帮我们拦截未登录用户   验证是否登录.设置日志记录.统计一些接口访问量啊 进行统一异常处理  设置一些数据啊 或者计算下应用接口方法执行效率啊 等等   2. 配置拦截器 由于用的是SpringMVC所以要知道 它是有个统一的 DispatcherServlet 控制器, 所以就不用传统的bean方式了,人家给我们提供了其他简单的方式 如下所示:  (我设置了三个方便测试用的) <!--

如何使用SpringMVC拦截器

如何使用SpringMVC拦截器 自定义一个拦截器,要实现HandlerInterceptor接口: public class MyInteceptor implements HandlerInterceptor { 略... } Spring MVC并没有总的拦截器,不能对所有的请求进行前后拦截. Spring MVC的拦截器,是属于HandlerMapping级别的,可以有多个HandlerMapping ,每个HandlerMapping可以有自己的拦截器. 当一个请求按Order值从小到

SpringMVC拦截器的使用

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.springMVC拦截器的实现方式 springMVC拦截器的实现一般有两种方式:第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口.第二种方式是继承实现了HandlerInterceptor接口的类,比

SpringMVC拦截器详解[附带源码分析]

目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 拦截器是每个Web框架必备的功能,也是个老生常谈的主题了. 本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理. 重要接口及类介绍 1. Hand