spring boot实现拦截器,springboot自定义拦截器拦截所有请求

  spring boot实现拦截器,springboot自定义拦截器拦截所有请求

  预处理预先处理,在目标的controller方法执行之前,进行处理:号

  在目标的controller方法执行之后,到达指定页面之前进行处理邮政编码:

  竣工后在页面渲染之后进行处理:号

  方法:

  1.跳羚通过实现拦截器接口实现拦截器

  2.通过webmvc配置器实现一个配置类,再通过@配置注解注入到容器

  3.指定拦截规则

  以用户登录为案例,若用户没有登录会议里面就没有用户的数据,就会转到首页登录页面

  在正确登录之后,就将注册表保存到会议中,再次访问页面的时候,登录拦截器就可以找到这个注册表对象,就不需要再次拦截到登录界面了。

  包com。zwz。弹簧靴网。截击机;导入org。spring框架。语境。注释。豆;导入org。spring框架。刻板印象。组件;导入org。spring框架。刻板印象。服务;导入org。spring框架。网络。servlet。处理者受体;导入org。spring框架。网络。servlet。模型和视图;导入javax。servlet。http。http servlet请求;导入javax。servlet。http。http servlet响应;导入javax。servlet。http。http会话;导入javax。web套接字。会话;公共类登录接收器实现处理程序拦截器{ @ Override public boolean preHandle(http servlet请求请求,HttpServletResponse响应,对象处理程序)抛出异常{ http会话session=request。getsession();object Reglister=session。get属性(“Reglister”);if (reglister!=null) {返回true}否则{请求。设置属性( msg ,请先登录!);请求。getrequestdispatcher(“/”).转发(请求、响应);返回false} } @覆盖公共void post句柄(http servlet请求请求,HttpServletResponse响应,对象处理程序,ModelAndView modelAndView)抛出异常{处理程序拦截器。超级棒。post句柄(请求、响应、处理程序、模型和视图);} @完成后覆盖公共void(http servlet请求请求,HttpServletResponse响应,对象处理程序例外情况)抛出异常{处理程序拦截器。超级棒。完成后(请求,响应,处理程序,ex);}}之后通过实现webmvc配置器接口实现一个配置类,在配置类中注入拦截器,最后再通过@配置注解注入配置。并且指定拦截的路径和需要放行的路径。

  注意拦截器 /** 会拦截一切资源,包括静态资源,需要将静态资源放行:号

  包com。zwz。弹簧靴网。配置;导入com。zwz。弹簧靴网。截击机。登录拦截器;导入org。spring框架。语境。注释。豆;导入org。spring框架。语境。注释。配置;导入org。spring框架。网络。过滤器。hiddenhttpmethodfilter导入组织。spring框架。网络。servlet。配置。注释。拦截器注册表;导入组织。spring框架。网络。servlet。配置。注释。pathmatchconfigurer导入org。spring框架。网络。servlet。配置。注释。webmvc配置器;导入org。spring框架。网络。util。urlpath帮助程序;@配置公共类配置文件实现WebMvcConfigurer { @ Override public void add interceptors(InterceptorRegistry){ registry。添加拦截器(新的拦截器日志()).addPathPatterns(/** ).excludePathPatterns(/log in judge ,/,/retolo ,/static/* * );} }拦截器的应用场景

  1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(页面视图)等。

  2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;

  3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如街头流氓可以自动记录);

  4.一般行为:读取cookie获取用户信息,将用户对象放入请求中,以方便后续进程的使用。还有提取地区和主题信息这样的事情,只要多个处理器需要,就可以通过使用拦截器来实现。

  5.OpenSessionInView:如Hibernate,进入处理器后打开会话,完成后关闭会话。

  拦截器与过滤器的区别

  1.拦截器基于Java反射机制,过滤器基于函数回调。

  2.拦截器不依赖于servlet容器,但是过滤器依赖于servlet容器。

  3.拦截器只能处理动作请求,而过滤器可以处理几乎所有的请求。

  4.拦截器可以访问动作上下文和值栈中的对象,但是过滤器不能。

  5.在动作的生命周期中,拦截器可以被多次调用,而过滤器只能在容器初始化时被调用一次。

  6.拦截器可以获得IOC容器中的所有bean,但是过滤器不能。这一点非常重要。将服务注入拦截器以调用业务逻辑。

  总结

  关于如何在Springboot中实现拦截器功能的文章到此结束。关于Springboot中拦截器功能的更多信息,请搜索Popular IT之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: