Controller层的拦截器继承于HandlerInterceptorAdapter
HandlerInterceptorAdapter.java
1 public abstract class HandlerInterceptorAdapter implements HandlerInterceptor {
2
3 /**
4 * This implementation always returns <code>true</code>.
5 */
6 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
7 throws Exception {
8 return true;
9 }
10
11 /**
12 * This implementation is empty.
13 */
14 public void postHandle(
15 HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
16 throws Exception {
17 }
18
19 /**
20 * This implementation is empty.
21 */
22 public void afterCompletion(
23 HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
24 throws Exception {
25 }
26
27 }
Spring拦截器通过重写这三个方法实现Controller的拦截。
配置拦截器
xml
1 <bean id="handlerMapping"
2 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
3 <property name="interceptors">
4 <list>
5 <ref bean="controllerInterceptor" />
6 </list>
7 </property>
8 <property name="mappings">
9 <props>
10 <prop key="/hao/hello.do">helloWorldController</prop>
11 </props>
12 </property>
13 </bean>
14
15 <bean id="controllerInterceptor" class="com.web.spring.mvc.interceptor.ControllerInterceptor"/>
16
ControllerInterceptor.java
1 public class ControllerInterceptor extends HandlerInterceptorAdapter {
2
3 /**
4 * 在Controller方法前进行拦截
5 */
6 public boolean preHandle(HttpServletRequest request,
7 HttpServletResponse response, Object handler) throws Exception {
8 System.out.println("ControllerInterceptor.preHandle()");
9 return true;
10 }
11
12 /**
13 * This implementation is empty.
14 */
15 public void postHandle(HttpServletRequest request,
16 HttpServletResponse response, Object handler,
17 ModelAndView modelAndView) throws Exception {
18 System.out.println("ControllerInterceptor.postHandle()");
19 }
20
21 /**
22 * 在Controller方法后进行拦截
23 */
24 public void afterCompletion(HttpServletRequest request,
25 HttpServletResponse response, Object handler, Exception ex)
26 throws Exception {
27 System.out.println("ControllerInterceptor.afterCompletion()");
28 }
29 }
说明:
发起请求,进入拦截器链,运行所有拦截器的preHandle方法,
1.当preHandle方法返回false时,从当前拦截器往回执行所有拦截器的afterCompletion方法,再退出拦截器链。
2.当preHandle方法全为true时,执行下一个拦截器,直到所有拦截器执行完。再运行被拦截的Controller。然后进入拦截器链,运行所有拦截器的postHandle方法,完后从最后一个拦截器往回执行所有拦截器的afterCompletion方法.
当有拦截器抛出异常时,会从当前拦截器往回执行所有拦截器的afterCompletion方法
Controller
1
2 @Controller
3 @RequestMapping("/hao")
5 public class HelloWorldController {
6
7 @RequestMapping(value = "/hello")
8 public String hello(HttpServletRequest request, HttpServletResponse response) {
9 System.out.println("hello");
15 return "helloWorld";
16 }
17 }
来源 http://www.blogjava.net/wmcoo/articles/333752.html
分享到:
相关推荐
本教程将详细介绍如何使用Spring MVC的拦截器来实现这一功能。 首先,了解拦截器(Interceptor)在Spring MVC中的角色。拦截器是Spring MVC提供的一种AOP(面向切面编程)特性,允许我们在请求处理之前、之后或者在...
Spring MVC 拦截器是基于Java的Web开发框架Spring MVC中的一个重要组件,它允许开发者在请求被控制器处理之前或之后执行自定义逻辑。拦截器主要用于实现通用功能,如权限验证、日志记录、性能监控等,从而提高代码的...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现权限检查、日志记录、性能统计等多种功能。本压缩包“spring mvc 拦截器获取请求...
Spring MVC拦截器是Spring Web框架的一个重要组成部分,它允许开发者在处理请求之前或之后执行自定义的操作,例如权限校验、日志记录等。在本篇文章中,我们详细探讨了如何通过Spring MVC拦截器实现session的控制,...
通过学习这个“spring MVC(新增拦截器demo)”项目,你不仅能够理解Spring MVC拦截器的基本使用,还能掌握如何将拦截器应用于实际的需求场景。拦截器的灵活运用可以大大提高代码的复用性和维护性,使得Spring MVC应用...
Spring MVC拦截器实现原理解析 Spring MVC拦截器是Spring MVC框架中的一种机制,可以对处理器进行预处理和后处理。它类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些...
Spring MVC 拦截器是Spring MVC框架提供的一种机制,用于在请求被控制器处理之前或之后执行特定操作。拦截器可以用来实现通用的功能,如权限验证、日志记录、性能监控等,避免在每个控制器方法中重复这些逻辑。在...
Spring MVC拦截器 Spring MVC的拦截器是属于HandlerMapping级别的,可以有多个HandlerMapping,每个HandlerMapping可以有自己的拦截器。拦截器是实现了org.springframework.web.servlet.HandlerInterceptor接口或...
Spring MVC 拦截器 interceptor 用法详解 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的...
这篇文章将深入探讨Spring MVC拦截器的作用、实现方式以及其在实际应用中的使用场景,并对比拦截器与过滤器的区别。 首先,让我们来看看如何实现一个Spring MVC拦截器: 1. **编写拦截器类**:你需要创建一个类并...
Spring Boot 中添加 Spring MVC 拦截器 在 Spring Boot 工程中添加 Spring MVC 拦截器是实现请求预处理和后处理的一种常见方式。 Spring MVC 的拦截器(Interceptor)不同于 Filter,可以实现请求的预处理和后处理...
1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 ...14.Spring MVC 拦截器案例 15.Spring MVC 异常处理案例
下面将详细介绍创建和配置Spring MVC拦截器的步骤。 1. **创建自定义拦截器** 首先,我们需要创建一个实现`HandlerInterceptor`接口的类。这个接口包含三个方法: - `preHandle(HttpServletRequest request, ...
在Spring框架中,MVC拦截器是一种用于对Spring MVC中的请求进行拦截处理的组件。它们在请求处理过程中的某些阶段介入,可以实现诸如日志记录、权限检查、请求处理时间统计等操作。实现日志记录是拦截器使用场景之一...
Spring MVC拦截器是在Web应用中对请求进行拦截处理的一种方式,类似于Servlet中的过滤器。Spring MVC拦截器主要用于在控制器(Controller)执行前后进行一些处理工作,如日志记录、权限检查、性能监控等。实现拦截器...
在 Spring MVC 中使用拦截器需要以下步骤: 1. **定义拦截器类**:实现 `HandlerInterceptor` 接口或继承 `HandlerInterceptorAdapter` 类。 2. **注册拦截器**:在配置文件中注册拦截器,指定需要拦截的 URL 模式。...