zoukankan      html  css  js  c++  java
  • springmvc之配置拦截器拦截相应的请求

    在springmvc.xml文件中配置:

        <mvc:interceptors>
            <!-- 配置自定义的拦截器 -->
            <bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean>
            <mvc:interceptor>
                <mvc:mapping path="/emps"/>
                <bean class="com.gong.springmvc.interceptors.SecondInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>

    FirstInterceptor.java

    package com.gong.springmvc.interceptors;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    public class FirstInterceptor implements HandlerInterceptor{
        
        //该方法在目标方法之前被调用
        //如果返回true,则继续调用后续的拦截器和目标方法,若为false,则不会在调用后续的拦截器和目标方法
        //该方法可以考虑做权限、日志、事务等
        @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");
        }
    
    }

    SecondInceptor.java

    package com.gong.springmvc.interceptors;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    public class SecondInterceptor implements HandlerInterceptor{
    
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            System.out.println("[SecondInterceptor] preHandle");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            System.out.println("[SecondInterceptor] postHandle");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            System.out.println("[SecondInterceptor] afterCompletion");
        }
    
    }

    在<mvc:mapping path="/emps"/>中可以配置拦截的url地址。

    在<mvc:exclude-mapping path=""/>中可以配置不拦截的url地址。

    像这种定义在<mvc:interceptors>下的<bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean>,没有指定是否拦截,则默认所有请求都调用该拦截器。

    在<mvc:interceptor>下使用<mvc:mapping path="/emps"/>表明要拦截该地址,调用的拦截器是SecondInterceptor。

    比如说,我们如果请求地址是/emps,那么两个拦截器都会被调用,在控制台可以看到:

    如果请求地址不是/emps,那么只会调用FirstInterceptor拦截器:

  • 相关阅读:
    腾讯云ubuntu安装Mysql并配置远程访问
    腾讯云ubuntu搭建tomcat
    腾讯云ubuntu搭建jdk
    说说建站那些事
    网络爬虫:分离生产者和消费者来优化爬虫程序
    spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
    UIkit – 轻量级前端框架
    【Spark】RDD操作具体解释3——键值型Transformation算子
    java线程具体解释
    HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12194125.html
Copyright © 2011-2022 走看看