springMVC拦截器



SpringMVC 拦截器是 Spring MVC 框架中的一个重要组成部分,它允许开发者在控制器处理请求之前或之后执行自定义逻辑。拦截器可以用于实现登录检查、权限验证、日志记录、性能监控等多种功能。本文将详细介绍 SpringMVC 拦截器的原理、配置方式以及异常处理机制。 ### 一、SpringMVC 拦截器原理 SpringMVC 的拦截器基于 Java 的动态代理机制,当一个请求到达 DispatcherServlet 时,会先经过一系列预定义或自定义的拦截器,每个拦截器都可以进行拦截操作,然后决定是否继续传递请求。如果所有拦截器都允许通过,请求才会到达相应的控制器方法。 ### 二、创建自定义拦截器 要创建自定义拦截器,你需要继承 `HandlerInterceptor` 或实现 `HandlerInterceptorAdapter` 类。这两个类都提供了三个核心方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 在请求被处理器处理之前调用,返回 `true` 表示继续处理,返回 `false` 表示中断请求。 2. `postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)`: 在处理器处理完请求,但渲染视图之前调用。 3. `afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)`: 在整个请求完成,视图渲染完毕后调用,用于清理资源或进行其他收尾工作。 ### 三、配置拦截器 配置拦截器有两种方式:注解配置和 XML 配置。 1. **注解配置**: 在 SpringMVC 的配置类中,使用 `@Configuration` 和 `@EnableWebMvc` 注解启用 Web MVC 功能,并使用 `@Bean` 注解声明拦截器。例如: ```java @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()); } } ``` 2. **XML 配置**: 在 `spring-mvc.xml` 配置文件中,使用 `<mvc:interceptors>` 标签添加拦截器: ```xml <beans xmlns:mvc="http://www.springframework.org/schema/mvc"> <mvc:interceptors> <bean class="com.example.MyInterceptor" /> </mvc:interceptors> </beans> ``` ### 四、异常处理 SpringMVC 提供了多种方式来处理异常,包括自定义异常处理器、全局异常处理器和错误页面配置。 1. **自定义异常处理器**:在控制器方法中使用 `@ExceptionHandler` 注解处理特定的异常。 ```java @Controller public class MyController { @ExceptionHandler(MyException.class) public ModelAndView handleMyException(MyException e) { // 处理逻辑 } } ``` 2. **全局异常处理器**:创建一个实现了 `HandlerExceptionResolver` 接口的类,并在 Spring 配置中声明为 Bean。这样,任何未被捕获的异常都会被这个处理器处理。 3. **错误页面配置**:在 `web.xml` 或 SpringMVC 配置中,可以设置错误代码对应的错误页面,例如: ```xml <!-- web.xml --> <error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page> <!-- SpringMVC 配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ... <property name="errorPages"> <map> <entry key="404" value="/WEB-INF/views/error/404.jsp"/> </map> </property> </bean> ``` ### 五、错误信息提示的修改和自定义 SpringMVC 提供了多种方式来自定义错误信息提示: 1. **ModelAndView**:在异常处理器中返回一个包含错误信息的 ModelAndView 对象。 2. **Flash Attributes**:利用 Flash Attributes 将错误信息保存到 Session,并在重定向后显示。 3. **BindingResult**:在表单提交场景中,使用 `@Validated` 注解验证模型对象,并通过 BindingResult 获取验证错误信息。 4. **自定义异常类型**:创建自定义异常类型并包含错误信息,然后在处理器中抛出。 ### 六、总结 SpringMVC 拦截器和异常处理机制是框架中的重要组成部分,它们允许开发者对请求处理流程进行细粒度控制,提供定制化的错误处理和增强应用的功能。理解并熟练运用这些机制,能帮助我们编写更加健壮、易维护的 Web 应用。在实际开发中,应根据项目需求灵活选择合适的配置方式和异常处理策略。







































































































- 1

- 静山晚风2017-11-26应该可以把

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于单片机的智能交通灯系统设计.doc
- 中国健康医疗大数据白皮书.docx
- 计算机模式识别-基础设计过程.docx
- 全网营销网络推广有那些方式.ppt
- 浅析医院档案的信息化建设.doc
- 计算机网络工程全面信息化管理探讨.docx
- 如何实现测绘数据的自动化处理与智能化分析.docx
- 基于Zigbee无线网络智能家居系统的设计与实现.docx
- 新时期医保档案信息化管理工作探究.docx
- 互联网平台下人力资源管理专业课程群建设浅析.docx
- 浅析互联网环境下档案管理服务研究.docx
- Apache-php-mysql在Linux下的安装与配置.doc
- 家庭网络市场消费需求调研报告.doc
- matlab在自动控制系统中应用数据处理分析方案.doc
- 师范院校计算机专业程序类课程群设置.docx
- 多元化教学模式在优化计算机基础课实验教学的探索.docx


