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;
        }
    
  • 相关阅读:
    封装函数通过输入(元素,属性,目标值)改变div样式
    unicode键盘编码表
    js中的索引值
    JavaScript的三大组成部分
    阿望教你用vue写扫雷(超详细哦)
    关于换行以及换行属性
    html中的a标签详解
    利用GitHub Pages + jekyll快速搭建个人博客
    本博客文章转载,请注明出处
    git clone克隆项目太慢,或者直接导致克不下来的解决办法(转载请注明出处)
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14410098.html
Copyright © 2011-2022 走看看