java过滤器和拦截器的区别_spring拦截器和过滤器

java过滤器和拦截器的区别_spring拦截器和过滤器集成拦截器登录验证为例添加拦截器public class LoginInterceptor implements HandlerInterceptor { private Logger log = LoggerFactory.getLogger(getClass()); //Controller逻辑执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletRe

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

集成拦截器

  • 登录验证为例

  • 添加拦截器

    public class LoginInterceptor implements HandlerInterceptor { 
         
    
        private Logger log = LoggerFactory.getLogger(getClass());
    
        //Controller逻辑执行之前
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
         
            log.info("preHandle....");
            Object user = WebUtils.getHttpSession().getAttribute("user");
            log.info("user:{}",user);
            String uri = request.getRequestURI();
            log.info("uri:"+ uri);
            if (user == null) { 
         
                response.sendRedirect("/");
                return false;
            } else { 
         
                return true;
            }
        }
    
        //Controller逻辑执行完毕但是视图解析器还未进行解析之前
        @Override
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 
         
            log.info("postHandle....");
        }
    
        //Controller逻辑和视图解析器执行完毕
        @Override
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 
         
            log.info("afterCompletion....");
        }
    }
    
  • 注册,配置拦截路径和排除登录需访问路径

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer { 
         
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) { 
         
            registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
                    .excludePathPatterns("/", "/login",  "/user/login","/user/login",
                            "/images/**", "/user/getCode", "/js/**", "/page/**",  "/layui/**",
                            "/layui_ext/**", "/login.html", "/webjars/**", "/css/**");
        }
    }
    
  • 退出登录清除session

        /** * 跳转到登录 * @return */
        @RequestMapping("toLogin")
        public String toLogin(){ 
         
            WebUtils.getHttpSession().removeAttribute("user");
            return "/";
        }
    
    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169002.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql截取字符串并且替换更新「建议收藏」

    mysql截取字符串并且替换更新「建议收藏」最近需要刷一个数据库表中的数据。表中的username字段中的名称是由下划线分割的两个字符串,现在需要去掉下划线后边的字符串,留下需要的姓名:updateusersetuser_name=SUBSTRING_INDEX(user_name,’_’,1)直接解决问题。用到mysql函数:SUBSTRING_INDEX(str,delim,count)…

    2022年5月24日
    109
  • cuda编程基础(编程软件有哪些)

    CUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

    2022年4月18日
    45
  • 单纯形法和单纯形表_什么是初始单纯形表

    单纯形法和单纯形表_什么是初始单纯形表线性规划常用的方法是单纯形表法,下面用一个简单的例子告诉大家如何用最简单的方法求取目标函数Z值。用单纯形方法求解线性规划问题:首先引入松弛变量,把原问题化为标准形式:具体步骤如下:第1步,确定初始单纯形表第2步:判别检验所有的检验系数(1)如果所有的检验系数,则由最优性判定定理知,已获最优解,即此时的基本可行解就是最优解。(2)若检验系数…

    2022年10月29日
    0
  • Sublime Text 2 介紹

    Sublime Text 2 介紹

    2021年12月2日
    44
  • 混合开发hybrid原理_混合开发是什么意思

    混合开发hybrid原理_混合开发是什么意思(一)开发移动三种模式(1)NativeApp:(原生APP)写App的同学,比如ios,安卓等(2)HybridApp:(混合开发),h5页面嵌入App中(3)WebApp:用手机浏览器打开h5页面(二)优缺点:(1)NativeApp:基本可以操作任何手机系统,比如(视频、扫码、获取通讯录、打电话)等(2)HybridApp:混合开发,如果想要h5操作手机系统,需要app同学配合前端,给前端提供相应的操作api前端也可以自己做混合开发,需要借助.

    2022年9月22日
    0
  • 元 变化

    元 变化

    2021年12月17日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号