springMvc 中mvc:interceptor拦截器详解
来源:互联网 发布:linux 运行rpm文件 编辑:程序博客网 时间:2024/06/02 02:39
现在我们主要对mvc:interceptors标签进行介绍,它的注册过程以及在访问时的拦截过程
接口HandlerInterceptor,它有三个方法:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView
modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception
ex) throws Exception {
}
在正常情况下,对于preHandle就是在处理函数之前先执行,然后在执行处理函数。接着执行postHandle,最后执行afterCmpletion
,afterCompletion无论是否出错肯定是要执行的,而postHandle则不是,不一定执行。
接下来我们写一个类继承HandleInterceptor来进行实验:LoginInterceptor如下:
public class LoginInterceptor implements HandlerInterceptor {
private static final Logger LOGGER = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception {
System.out.println("preHandle");
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView
modelAndView) throws Exception {
System.out.println("postHandle");
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception
ex) throws Exception {
System.out.println("afterCompletion");
super.afterCompletion(request, response, handler, ex);
}
}
该接口的基本内容说完了,接下来看一下它的配置说明:
<mvc:interceptors path-matcher="xxx">
<mvc:interceptor>
<mvc:mapping path="xxx"/>
<mvc:exclude-mapping path="xxxx"/>
<bean class="xxxx"></bean>
</mvc:interceptor>
<bean class="com.lg.mvc.interceptor.LoginInterceptor" />
</mvc:interceptors>
其实在mvc:interceptors标签中,有两种类型的配置,一种直接配置一个bean(bean和ref归为一类),另一种还要配置上拦截的路
径和排除的路径,直接配置的bean那就代表对所有的请求进行拦截,而对于mvc:interceptor则代表有着更精细的控制。
而mvc:interceptor的属性path-matcher则表示配置一个自定义的PathMatcher,它主要用来处理路径的匹配规则,默认采取的
PathMatcher为AntPathMatcher,具有ant风格的路径规则,如?表示任何单字符,*表示0个或多个字符,**表示0个或多个目录。
其中:mvc:mapping 拦截器路径配置 mvc:exclude-mapping 拦截器不需要拦截的路径
接口HandlerInterceptor,它有三个方法:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView
modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception
ex) throws Exception {
}
在正常情况下,对于preHandle就是在处理函数之前先执行,然后在执行处理函数。接着执行postHandle,最后执行afterCmpletion
,afterCompletion无论是否出错肯定是要执行的,而postHandle则不是,不一定执行。
接下来我们写一个类继承HandleInterceptor来进行实验:LoginInterceptor如下:
public class LoginInterceptor implements HandlerInterceptor {
private static final Logger LOGGER = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception {
System.out.println("preHandle");
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView
modelAndView) throws Exception {
System.out.println("postHandle");
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception
ex) throws Exception {
System.out.println("afterCompletion");
super.afterCompletion(request, response, handler, ex);
}
}
该接口的基本内容说完了,接下来看一下它的配置说明:
<mvc:interceptors path-matcher="xxx">
<mvc:interceptor>
<mvc:mapping path="xxx"/>
<mvc:exclude-mapping path="xxxx"/>
<bean class="xxxx"></bean>
</mvc:interceptor>
<bean class="com.lg.mvc.interceptor.LoginInterceptor" />
</mvc:interceptors>
其实在mvc:interceptors标签中,有两种类型的配置,一种直接配置一个bean(bean和ref归为一类),另一种还要配置上拦截的路
径和排除的路径,直接配置的bean那就代表对所有的请求进行拦截,而对于mvc:interceptor则代表有着更精细的控制。
而mvc:interceptor的属性path-matcher则表示配置一个自定义的PathMatcher,它主要用来处理路径的匹配规则,默认采取的
PathMatcher为AntPathMatcher,具有ant风格的路径规则,如?表示任何单字符,*表示0个或多个字符,**表示0个或多个目录。
其中:mvc:mapping 拦截器路径配置 mvc:exclude-mapping 拦截器不需要拦截的路径
0 0
- springMvc 中mvc:interceptor拦截器详解
- SpringMVC中使用Interceptor拦截器详解
- SpringMVC mvc:interceptor拦截器配置
- 【springMVC】springMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- SpringMVC中使用Interceptor拦截器
- Android事件分发,事件拦截,事件处理总结
- PHP 7.1 + Apache 2.4 + MySQL 5.6非集成环境配置
- 示波器测485串口波特率的使用方法
- nyoj-12-喷水装置(二)
- Java使用JSCH实现对FTPS服务器文件操作
- springMvc 中mvc:interceptor拦截器详解
- Hadoop Cluster启动后数据节点(DataNode)进程状态丢失
- 关于类型萃取
- 常用Shell基本命令
- 抽象类与接口的区别
- 网页提交的方式
- bzoj1054 ---- 送给要入OI的同学
- Theano入门说明(1)——概要
- HTML5 发送验证码后倒计时