Springboot 使用拦截器拦截请求@Controllert和页面访问

你好! 本人在做一个项目时,要用到拦截器和过滤器 ,目的是为了让用户先登陆再操作,防止用户直接访问页面或者请求。自己就上网找了找,发现有好多方法,自己也总结了一下,结合使用。拦截器和过滤器的区别最大的就是拦截器的范围要大,一般来说过滤器过滤的时页面,不能过滤请求,拦截器不但能拦截请求还能拦截页面。代码如下:
package com.ysd.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Component
public class MyInterceptor implements HandlerInterceptor {@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {HttpSession session = request.getSession();String uri = request.getRequestURI();System.out.println("filter url:"+uri);System.out.println("----------开始进行拦截-----------");if (session.getAttribute("user") != null) {System.out.println("-----------拦截通过----------");return true;}else {System.out.println("-----------拦截不通过----------");// 跳转登录String url = request.getContextPath() + "/login2.html";response.sendRedirect(url);return false;}}@Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o,ModelAndView modelAndView) throws Exception {System.out.println("myinterc posthandler");}@Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o,Exception e) throws Exception {System.out.println("myinterc aftercompletion");}
}

这就定义了一个拦截器 ,只需implements HandlerInterceptor就行 ,重写方法,其中需要修改的是preHandle()方法。然后可以使用@Component把类配置一个bean,
之后在创建一个类AddInterceptor(名字自己起) 实现implements WebMvcConfigurer(Springboot 2.0版本之后的使用,之前的话使用WebMvcConfigurerAdapter,这个需要自己重写方法)在类上加注解@Configuration,代码如下
package com.ysd.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class AddInterceptor implements  WebMvcConfigurer{@Autowiredprivate MyInterceptor myInterceptor;public void addInterceptors(InterceptorRegistry registry){registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login2.html","/js/**","/img/**","/login/denglu");}
}

具体的过滤可以自己定义,之间使用逗号(“,”)分隔,addPathPatterns()是要过滤的页面,**代表所有,excludePathPatterns()时除了什么不拦截 ,登陆页面肯定不拦截,要不一直重定向,当然还有css样式,图片img。本人萌新,有什么不对的欢迎指教!!!

SpringBoot拦截器和过滤器的一起使用相关推荐

  1. SpringBoot 拦截器和过滤器

    拦截器和过滤器 时光飞逝,最近也是很忙,但是忙到最后发现在自己并没有太多的成长 工作 学习 生活 没想到成长是不经意间的,像是被 推着,让你身不由己 午休时间,写写博客,也是保留一些自己的时间和空间 ...

  2. springboot拦截器和过滤器的区别与使用

    拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查.日志记录等,不同的是: 适用范围不同:filter是servle ...

  3. 区分Java拦截器和过滤器

    今天带大家分析java拦截器和过滤器的区别,文中有非常详细的解释说明,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下 一.过滤器(filter) 过滤器处于客户端与Web资源(Serv ...

  4. 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别

    转自:https://www.cnblogs.com/shangc/p/5939708.html 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别.其主要区别为以下几点: 1)拦截器是基于 ...

  5. struts2中拦截器和过滤器的比较

    拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...

  6. 【SpringMVC】拦截器和过滤器

    拦截器: 拦截器是springmvc中的一种,需要实现HandlerInterceptor接口. 拦截器和过滤器类似,功能方向侧重点不同. 过滤器是用来过滤器请求参数,设置编码字符集等工作. 拦截器是 ...

  7. 关于SSM框架设置拦截器和过滤器

    我们知道拦截器和过滤器都是在项目中起到拦截过滤请求的功能,所以可能在设置的时候会傻傻分不清.这里我们先来比较它们的区别. 过滤器Filter是JavaEE标准,在Servlet的规范中定义的,是Ser ...

  8. 详解拦截器和过滤器的区别

    拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对acti ...

  9. java 拦截器和过滤器的区别

    介绍 在 Java Web 应用程序中,拦截器和过滤器是两种不同的机制,用于在请求/响应处理过程中进行拦截和过滤.两者都可以用来在请求到达目标资源之前对其进行预处理.修改或拦截. 但是,拦截器和过滤器 ...

  10. 拦截器和过滤器有什么区别?

    首先了解什么是过滤器什么是拦截器 ①过滤器(Filter) 过滤器通过直接实现Filter接口实现,也可以通过@WebFilter注解实现特定的URL拦截 在Filter接口中定义了三个方法: ini ...

最新文章

  1. 我们单位里新来的应届毕业生(转贴)
  2. BZOJ1001[BeiJing2006]狼抓兔子——最小割
  3. 【转】Asp.net控件开发学习笔记整理篇 - Asp.net客户端状态管理
  4. 虚方法、重写方法和抽象方法[转载]
  5. oracle siplugincol表,ORACLE 经常使用的命令工具-第三章:表
  6. 去除下拉框的默认样式
  7. Linux学习-15-学习LVM逻辑卷
  8. SpringCloud面试题分享
  9. BasKet Note Pads-利用软件作条记
  10. JAVA 正则表达式 RegexUtil
  11. 传智Python视频_基础班+就业班
  12. Python考试基础知识
  13. yii配置mysql_YII2中配置MySQL读写分离
  14. this指向问题(call、apply、blind),自我理解的
  15. python 图形库介绍_数据分析Python手绘图形库有哪些
  16. c语言 python rsa库_python如何调用libcrypto实现RSA解密?
  17. android 渠道商,【华为怒斥渠道商】
  18. 小米note3如何打开usb调试
  19. Tomcat崩溃排查
  20. 盘点招招毙命的29种USB攻击方式

热门文章

  1. 【SQL学习】select语句使用实例
  2. win8需要计算机管理员权限才能删除,win8系统使用管理员权限无法删除部分文件怎么办...
  3. windows下支持H265的rtmp ffplay播放器 ffmpeg的编译
  4. 梦网云科技的短信接口怎么样,真实体验
  5. html实例,实现表单
  6. 偏导数,雅可比矩阵(jacobi matrix),黑塞矩阵(Hessian matrix)
  7. 个人微信api接口调用代码
  8. c语言程序设计超市会员卡管理系统,c语言程序设计超市管理系统.doc
  9. 切身体验的优秀时间管理法——番茄时间工作法!
  10. UE4动画蒙太奇位移