举个例子Test2Interceptor要获取TestInterceptor来操作
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.xxx.TestInterceptor">
</bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.xxx.Test2Interceptor">
</bean>
</mvc:interceptor>
</mvc:interceptors>
public class TestInterceptor implements HandlerInterceptor {
}
public class Test2Interceptor implements HandlerInterceptor,ApplicationContextAware {
private ApplicationContext applicationContext;
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object object) throws Exception {
Map<String,MappedInterceptor> map = applicationContext.getBeansOfType(MappedInterceptor.class);
for(MappedInterceptor m : map.values()) {
if(m.getInterceptor() instanceof TestInterceptor) {
System.out.println(m.getInterceptor());
}
}
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
得出原来spring mvc把<mvc:interceptors>配置的bean放到MappedInterceptor实例中
咱们看下MappedInterceptor源码
public final class MappedInterceptor {
private final String[] includePatterns;
private final String[] excludePatterns;
private final HandlerInterceptor interceptor;
//省略
}
这里得出MappedInterceptor 持有HandlerInterceptor实例对象,HandlerInterceptor也就是我们刚刚写的拦截器的要实践的接口。
这样我们就明白了,大功告成。
分享到:
相关推荐
Spring MVC 拦截器是基于Java的Web开发框架Spring MVC中的一个重要组件,它允许开发者在请求被控制器处理之前或之后执行自定义逻辑。拦截器主要用于实现通用功能,如权限验证、日志记录、性能监控等,从而提高代码的...
- XML配置:在Spring的配置文件中,通过`<mvc:interceptors>`标签来定义拦截器,然后在`<bean>`中定义具体的拦截器实例,通过`<mvc:mapping>`指定需要拦截的URL。 - 注解配置:使用`@EnableWebMvc`开启Web MVC配置...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前、之后以及视图渲染之后执行一些额外的操作。拦截器通过实现`HandlerInterceptor`接口或者继承`HandlerInterceptorAdapter`...
添加`<mvc:interceptors>`元素,并在其中定义你的拦截器bean。 最后,需要注意的是,由于“将流多次运用”的描述,这里可能涉及到流的处理。在处理HTTP请求时,特别是涉及文件上传时,确保正确地管理和关闭输入/...
十七、Spring MVC如何取得Spring管理的bean:阐述了如何在Spring MVC中获取Spring容器管理的Bean,以便进行业务处理。 十八、Spring MVC多视图控制器:解释了如何配置和使用Spring MVC的多视图控制器来处理不同的...
下面将详细介绍创建和配置Spring MVC拦截器的步骤。 1. **创建自定义拦截器** 首先,我们需要创建一个实现`HandlerInterceptor`接口的类。这个接口包含三个方法: - `preHandle(HttpServletRequest request, ...
九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常处理? 十二、spring mvc 如何把全局异常记录到日志中? 十三、如何给spring3 MVC中的Action做JUnit单元测试? ...
九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常处理? 十二、spring mvc 如何把全局异常记录到日志中? 十三、如何给spring3 MVC中的Action做JUnit单元测试? ...
Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对Controller方法调用的预处理和后处理。下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建...
在Spring MVC中,我们可以通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来创建自定义拦截器。拦截器的主要方法包括preHandle、postHandle和afterCompletion,分别在请求处理前、处理后以及...
在 Spring MVC 中使用拦截器需要以下步骤: 1. **定义拦截器类**:实现 `HandlerInterceptor` 接口或继承 `HandlerInterceptorAdapter` 类。 2. **注册拦截器**:在配置文件中注册拦截器,指定需要拦截的 URL 模式。...
`org.springframework.web-3.0.2.RELEASE.jar`:这个库包含了一些 Web 相关的支持类,如 Web 应用上下文(WebApplicationContext)、HTTP 拦截器(HandlerInterceptor)和请求映射(RequestMapping)等,它们与 MVC ...
9. **拦截器(Interceptor)**: Spring MVC允许自定义拦截器,可以在请求处理前或后执行一些通用逻辑,如权限检查、日志记录等。 10. **异常处理**: 可以全局或局部地配置异常处理器,将异常转换为特定的视图或HTTP...
- **获取时区信息**:Spring MVC 提供了获取用户时区的功能。 - **解析器**:包括 AcceptHeaderLocaleResolver、CookieLocaleResolver 和 SessionLocaleResolver。 - **地区更改拦截器 LocaleChangeInterceptor**:...
本文将深入探讨Spring MVC拦截器的原理、配置以及如何创建自定义拦截器。 首先,了解拦截器的基本概念。拦截器是AOP(面向切面编程)思想在Spring MVC中的体现,它通过在请求到达目标控制器之前插入额外的处理步骤...
源码中可以发现它如何处理请求映射、拦截器链以及异常处理。 Controller接口是Spring MVC中的关键角色,它定义了业务逻辑和视图之间的交互。开发者通常会实现这个接口或使用@Controller注解的类来处理请求。在源码...
通过`<mvc:interceptors>`标签,我们可以添加自定义的拦截器bean。 ```xml <mvc:interceptors> <bean class="com.shzx.adapter.SessionInterceptor" /> </mvc:interceptors> ``` 总结一下,本篇文章介绍了如何在...
虽然这个示例是注解驱动的,但通常还需要一个配置类来启用Spring MVC,如`WebMvcConfigurerAdapter`的子类,配置拦截器、视图解析器等。然而,Spring Boot项目通常不再需要显式配置。 8. **依赖注入**: Spring ...
12. **Interceptor**:拦截器,允许在请求处理前后执行自定义逻辑,如日志记录、权限检查等。 13. **View Technologies**:Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等,可以根据项目需求选择。 ...