美文网首页
springMVC拦截器

springMVC拦截器

作者: writeanewworld | 来源:发表于2017-12-06 11:38 被阅读0次

1.单个拦截器

package com.gb.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class RoleInterceptor implements HandlerInterceptor{

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
    System.out.println("preHandle===1");
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {
    System.out.println("postHandle===1");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
        throws Exception {
    System.out.println("afterCompletion===1");
}}

ds-servlet.xml配置文件中拦截器配置

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.gb.interceptor.RoleInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

拦截基本流程:
一个请求 ---->先经过核心控制器(DispatcherrServlet),

然后经过处理器映射(HandlerMapping 地址与处理器之间的映射关系),加载配置文件时,创建HandlerMapping,这时候就有了地址与处理器之间的映射关系。.

然后到处理器适配器(HandlerAdapter,包含拦截器)得到对应的处理器适配器,就可以处理请求了。(适配器就相当于一个有很多东西,需要啥他就给你按照一定的模式返回你想要的东西)

2.多个拦截器:
遵循 ”责任链“ 模式,即三个拦截器 1 2 3prehandler返回都是true 的时候,然后执行postHandler、afterCompletion。prehandler 的执行顺序是 1 2 3,postHandler、afterCompletion执行都是 3 2 1。
当有其中有一个的preHander为false的时候,就只执行preHandler,其余的不会执行。

3.拦截路径问题:
遵循 ant-stype,这不是正则表达式! 百度搜索ant** 查看博文
/** ---> 这个代表匹配所有的路径,与 /* 不相同的是 /只是匹配一个目录下的所有文件目录。
例如: /test/a/b/c 通过/
匹配 ,/test......通过/匹配

4.system.currentTimesMillis 用来测试性能 ,看执行时间

相关文章

网友评论

      本文标题:springMVC拦截器

      本文链接:https://www.haomeiwen.com/subject/ulrkixtx.html