zoukankan      html  css  js  c++  java
  • SpringMVC拦截器

    Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。
    将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。


    自定义拦截器很简单,只有如下三步:

    ①创建拦截器类实现HandlerInterceptor接口

    ②目标方法

    ③配置拦截器


    测试的url

    http://localhost:8080/eighteen?param=yes


    拦截器类

    package com.interceptor;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MyInterceptor implements HandlerInterceptor {
    
    
    //    目标方法执行之前执行
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("preHandle");
    //        从url中获得参数
            String getParam = request.getParameter("param");
            if(getParam.equals("yes")){
                return true;
            }else{
                return false;
            }
        }
    
    //    目标方法执行之后,视图对象返回之前,执行
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("postHandle");
        }
    
    //    所有流程执行完后执行
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("afterCompletion");
        }
    }
    

    配置拦截器

    <!--    配置拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <!--            对哪些资源进行拦截-->
                <mvc:mapping path="/**"/>
                <bean id="MyInterceptor" class="com.interceptor.MyInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
    

    目标方法

    @RequestMapping("eighteen")
        public ModelAndView test18(){
            System.out.println("目标方法执行");
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("name","123");
            modelAndView.setViewName("success");
            return modelAndView;
        }
    
  • 相关阅读:
    跨域问题
    vuejs devtools 插件安装
    vue开发环境搭建
    .net core 入门一
    go 基础 处理异常
    go 基础 结构体 接口 访问权限
    【火炉炼AI】机器学习040-NLP性别判断分类器
    【火炉炼AI】机器学习039-NLP文本分类器
    【火炉炼AI】机器学习038-NLP创建词袋模型
    【火炉炼AI】机器学习037-NLP文本分块
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14410098.html
Copyright © 2011-2022 走看看