springmvc拦截器实现

在springmvc中能够配置本身的拦截器,分别实如今请求方法以前、显示视图以前、显示视图以后调用拦截器中的方法。java

  • 首先建立一个java类,而且实现HandlerInterceptor接口,而且实现该接口中的三个方法。
/** * 该方法在目标方法以前被调用. * 若返回值为 true, 则继续调用后续的拦截器和目标方法. * 若返回值为 false, 则不会再调用后续的拦截器和目标方法. * <p> * 用途:作权限. 日志, 事务等. */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        System.out.println("[FirstInterceptor] preHandle");
        return true;
    }

    /** * 调用目标方法以后, 但渲染视图以前. * 用途:对请求域中的属性或视图作出修改. */
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        System.out.println("[FirstInterceptor] postHandle");
    }

    /** * 渲染视图以后被调用. * 用途:释放资源 */
    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("[FirstInterceptor] afterCompletion");
    }
  • 设置好的本身的拦截器之后须要在springmvc中配置拦截器,在此处用一样道理实现了另外一个拦截器,名为MySecondInterceptors。
  • 在springmvc的配置文件中加入以下代码
<mvc:interceptors>
        <!--表示在请求全部的控制器方法以前都会调用该拦截器-->
        <bean class="com.springapp.interceptors.MyFirstInterceptors"/>

        <!--表示在访问指定的控制器方法时才会调用的拦截器-->
        <mvc:interceptor>
            <mvc:mapping path="/user/"/>
            <bean class="com.springapp.interceptors.MySecondInterceptors"/>
        </mvc:interceptor>

    </mvc:interceptors>
相关文章
相关标签/搜索