当前位置: 首页 > news >正文

网页制作什么主题好网站整站优化公司

网页制作什么主题好,网站整站优化公司,做视频网站服务器配置,wordpress返回顶部插件在SpringBoot中我们可以使用HandlerInterceptorAdapter这个适配器来实现自己的拦截器。这样就可以拦截所有的请求并做相应的处理。 应用场景 日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。权限检查:如登陆检测&#xff…

在SpringBoot中我们可以使用HandlerInterceptorAdapter这个适配器来实现自己的拦截器。这样就可以拦截所有的请求并做相应的处理。

应用场景

  • 日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。
  • 权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。
  • 性能监控:典型的是慢日志。

在HandlerInterceptorAdapter中主要提供了以下的方法:

  • preHandle:在方法被调用前执行。在该方法中可以做类似校验的功能。如果返回true,则继续调用下一个拦截器。如果返回false,则中断执行,也就是说我们想调用的方法 不会被执行,但是你可以修改response为你想要的响应。
  • postHandle:在方法执行后调用。
  • afterCompletion:在整个请求处理完毕后进行回调,也就是说视图渲染完毕或者调用方已经拿到响应。

HandlerInterceptor

public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {}
}

AsyncHandlerInterceptor

public interface AsyncHandlerInterceptor extends HandlerInterceptor {default void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {}
}

abstract class HandlerInterceptorAdapter

public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor {public HandlerInterceptorAdapter() {}public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {}public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {}
}

看到这3个类和接口关系我们就明白了集成 HandlerInterceptorAdapter 只是为了能让我们只重写自己需要的方法即可,如果我们需要全部重写,也可以直接实现接口

运行流程总结如下:

  • 拦截器执行顺序是按照Spring配置文件中定义的顺序而定的。
  • 会先按照顺序执行所有拦截器的preHandle方法,一直遇到return false为止,比如第二个preHandle方法是return false,则第三个以及以后所有拦截器都不会执行。若都是return true,则按顺序加载完preHandle方法。
  • 然后执行主方法(自己的controller接口),若中间抛出异常,则跟return false效果一致,不会继续执行postHandle,只会倒序执行afterCompletion方法。
  • 在主方法执行完业务逻辑(页面还未渲染数据)时,按倒序执行postHandle方法。若第三个拦截器的preHandle方法return false,则会执行第二个和第一个的postHandle方法和afterCompletion(postHandle都执行完才会执行这个,也就是页面渲染完数据后,执行after进行清理工作)方法。(postHandle和afterCompletion都是倒序执行)

编写拦截器

public class LoginInterceptor extends HandlerInterceptorAdapter {Logger logger = LoggerFactory.getLogger(getClass());@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("==============LoginInterceptor========preHandle==========");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {System.out.println("==============LoginInterceptor======postHandle============");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {System.out.println("==============LoginInterceptor=======afterCompletion===========");}@Overridepublic void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("==============LoginInterceptor========afterConcurrentHandlingStarted==========");}}
public class LoginInterceptor2 extends HandlerInterceptorAdapter {Logger logger = LoggerFactory.getLogger(getClass());@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("==============LoginInterceptor2========preHandle==========");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {System.out.println("==============LoginInterceptor2======postHandle============");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {System.out.println("==============LoginInterceptor2=======afterCompletion===========");}@Overridepublic void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("==============LoginInterceptor2========afterConcurrentHandlingStarted==========");}}

WebMvcConfigurerAdapter 抽象类是对WebMvcConfigurer接口的简单抽象(增加了一些默认实现),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapter已被废弃 。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport

实现WebMvcConfigurer配置拦截器

@Configuration
public class SpringMVCConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor());registry.addInterceptor(new LoginInterceptor2());}
}

在这里插入图片描述

自行验证上面"运行流程总结"吧 不过多的赘述了

http://www.tj-hxxt.cn/news/118636.html

相关文章:

  • 大连电子学校网站建设页面seo优化
  • b2c商城网站营销方案范文100例
  • 网站建设 今网科技seo推广教程
  • 微信表情制作小程序深圳整站seo
  • 网站被墙 怎么做301关键词排名点击软件怎样
  • boss直聘企业邮箱怎么注册百度seo关键词排名
  • 桦南县建设局网站深圳网站seo外包公司哪家好
  • 服务网络是什么意思深圳seo排名优化
  • 老网站绑定新网站如何做?互联网营销师怎么做
  • 免费开商城网站吗手机百度搜索app
  • 如何做自己的网站赚钱网红推广团队去哪里找
  • 互联网站建设机构微商引流的最快方法是什么
  • 学做内账的网站百度seo服务方案
  • 策划专业网站今日时政新闻
  • dedecms 网站地图生成做网站流程
  • 江苏建设纸质考试网站seo网络排名优化技巧
  • 武汉网站建设排行培训班报名
  • 秦皇岛网站制作专家教你简单建站品牌营销策划与管理
  • 网站开发技术指标与参数全文搜索引擎有哪些
  • 有网站做淘宝客真正免费的网站建站平台
  • 焦作 网站建设网站在线推广
  • 自己电脑做网站主机做推广的公司一般都叫什么
  • 网站建设的前后台代码淮北网站建设
  • 手机网站模板制作网页设计实训报告
  • 网页大全seo完整教程视频教程
  • 做建材的哪些网站做网络营销推广的公司
  • 做外贸网站的效果怎么样中国营销网官网
  • 支付宝怎么做网站维护免费的拓客平台有哪些
  • 高端手机网站案例培训心得体会300字
  • html模板 网站手机优化大师怎么退款