springmvc之interceptor(拦截器)

1.自定义MyInterceptor impletments HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {
    
    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    /**
     * 预处理(调用Controller之前执行),进行参数检查,登录认证,编码等操作
     * 在业务处理器处理请求之前对该请求进行拦截处理
     * 每个Interceptor的preHandle调用会依据它的声明顺序依次执行
     *
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @return true(继续调用下一个Interceptor 的preHandle)、false(请求结束)
     * @throws Exception
     */
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        String id = httpServletRequest.getParameter("id");
        if (num > Integer.parseInt(id)) {
            System.out.println("-------dada-------");
        }
        return false;
    }

    /**
     * 后处理(调用Controller之后,返回结果或者展示模型之前),可以对返回结果(ModelAndView对象)进行修改
     * 每个Interceptor的preHandle调用会依据它的声明顺序反向执行(与preHandle相反)
     *
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param modelAndView
     * @throws Exception
     */
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    }

    /**
     * 整个请求完毕的回调,即在视图渲染完毕时回调
     * 性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally
     *
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e
     * @throws Exception
     */
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    }
}

 

2.mvc-servlet.xml配置

 

<beans xmlns="xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 拦截器 -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
        <mvc:mapping path="/user/*"/>
        <bean class="com.ytud.web.interceptor.OutTimeInterceptor">
            <!-- get/set必不可少 -->
            <property name="num">
                <value>100</value>
            </property>
        </bean>
    </mvc:interceptor>
</mvc:interceptors>

 

posted @ 2016-05-20 10:33  琅琊天  阅读(175)  评论(0编辑  收藏  举报