zoukankan      html  css  js  c++  java
  • spring mvc 拦截器

    拦截器的概述
      1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
      2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,
       在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。
      3. 拦截器和过滤器的功能比较类似,区别
        1. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
            拦截器是SpringMVC框架独有的。
        2. 过滤器配置了/*,可以拦截任何资源。
            拦截器只会对控制器中的方法进行拦截。
        3. 拦截器也是AOP思想的一种实现方式
          想要自定义拦截器,需要实现HandlerInterceptor接口
     
    使用拦截器步骤
     
    1. 创建类,实现HandlerInterceptor接口,重写需要的方法
    public class HandlerInterceptor1 implements org.springframework.web.servlet.HandlerInterceptor {
    
        /**
         *
         * @param request
         * @param response
         * @param handler
         * @return true: 放行,执行下一个拦截器 ;
         *         false:不放行,直接跳转到某页面,不执行对应的controller方法
         * @throws Exception
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("拦截器1执行了.....前");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("拦截器1执行了...后");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("拦截器1执行了...加载");
        }
    }
    2. 在springmvc.xml中配置拦截器类
    <!--配置拦截器-->
        <mvc:interceptors>
            <!--配置拦截器-->
            <mvc:interceptor>
                <!--要拦截的-->
                <mvc:mapping path="/user/*"/>
                <!--不要拦截的--><!--<mvc:exclude-mapping path=""/>-->
                <!--注入拦截器对象-->
                <bean class="cn.itcast.interceptor.HandlerInterceptor1"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
     
    HandlerInterceptor接口中的方法
      1. preHandle方法是controller方法执行前拦截的方法
        1. 可以使用request或者response跳转到指定的页面
        2. return true放行,执行下一个拦截器,如果没有拦截器,执行controller中的方法。
        3. return false不放行,不会执行controller中的方法。
      2. postHandle是controller方法执行后执行的方法,在JSP视图执行前。
        1. 可以使用request或者response跳转到指定的页面
        2. 如果指定了跳转的页面,那么controller方法跳转的页面将不会显示。  
      3.afterCompletion方法是在JSP执行后执行
        1. request或者response不能再跳转页面了

     

  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12742536.html
Copyright © 2011-2022 走看看