• Java拦截器


    一、InterceptorRegister

    package com.muen.interceptor;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    
    @Configuration
    public class InterceptorRegister extends WebMvcConfigurerAdapter {
    
        private static final Logger logger = LoggerFactory.getLogger(InterceptorRegister.class);
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration ir = registry.addInterceptor(new MyInterceptor());
            /** 拦截所有路径 */
            /* ir.addPathPatterns("/**"); */
            /** 不拦截获取验证码请求路径 */
            /* ir.excludePathPatterns("/getBizId"); */
            /** 拦截个人中心 */
            ir.addPathPatterns("/Accounts/**");
            /** 拦截家庭档案 */
            ir.addPathPatterns("/FamilyFile/**");
            /** 拦截健康档案 */
            ir.addPathPatterns("/HealthyArchives/**");
            /** 健康自测 */
            ir.addPathPatterns("/HealthTest/**");
            /** 体检报告 */
            ir.addPathPatterns("/ExamineReport/**");
            /** 家庭医生 */
            ir.addPathPatterns("/familydoctor/**");
            /** 指标趋势 */
            ir.addPathPatterns("/canvasManage/**");
            super.addInterceptors(registry);
        }
    
    }

    二、MyInterceptor

    package com.muen.interceptor;
    
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.muen.util.Constants;
    import com.muen.util.StringUtils;
    
    
    /**
     * @author MyPC
     */
    public class MyInterceptor implements HandlerInterceptor {
    
        private Logger logger = Logger.getLogger(MyInterceptor.class);
    
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            logger.info("preHandle...");
            String path = request.getServletPath();
            // 不需要的拦截直接过;不需要拦截的请求配置在这个属性里面加
            if (path.matches(Constants.NO_INTERCEPTOR_PATH)) {
                return true;
            } else {
                // TODO:这写你拦截需要干的事儿,比如各种判断等
                //没有登录
                if (StringUtils.isBlank(request.getSession().getAttribute("personalInfo"))) {
                    if (StringUtils.isBlank(request.getSession().getAttribute("personalBaseInfo"))) {
                        logger.info("没有登录,被拦截了,跳转到登录页面...");
                        request.getRequestDispatcher("/personal/login").forward(request, response);
                        return false;
                    } else {
                        return true;
                    }
    
                }
                return true;
            }
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                               ModelAndView modelAndView) throws Exception {
            logger.info("postHandle...");
    
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            logger.info("afterCompletion...");
        }
    
    
    }

    PS:根据项目需求自行修改

  • 相关阅读:
    225. 用队列实现栈
    232. 用栈实现队列
    459.重复的子字符串(简单)
    28. 实现 strStr()(简单)
    剑指 Offer 58
    541. 反转字符串 II(简单)
    浏览器渲染页面的过程、重绘、重排以及页面优化
    隐藏一个元素的几种方法
    当我们在浏览器中输入一个URL后,发生了什么?
    Object.create() 和 new Object()、{} 的区别
  • 原文地址:https://www.cnblogs.com/TangJiaXin/p/12929737.html
Copyright © 2020-2023  润新知