您的位置:首页 > 娱乐 > 八卦 > 婚纱摄影网站开题报告_江西省地图_seo发帖网站_推广链接怎么制作

婚纱摄影网站开题报告_江西省地图_seo发帖网站_推广链接怎么制作

2024/10/6 5:54:37 来源:https://blog.csdn.net/nihui123/article/details/142610224  浏览:    关键词:婚纱摄影网站开题报告_江西省地图_seo发帖网站_推广链接怎么制作
婚纱摄影网站开题报告_江西省地图_seo发帖网站_推广链接怎么制作

在这里插入图片描述
  上篇文章中我们创建了一个RestFul风格的接口,并且介绍了如何对其结果进行格式化的方式。这篇文章我们来讲在SpringMVC中常用到的另一个概念拦截器。

什么是拦截器?

  在Spring MVC中拦截器有点类似于在Servlet中的过滤器的概念,主要是用来拦截用户求,并且对用户请求进行相应的前置处理。例如鉴权、请求记录、日志处理、判断用户是否登录等等。那么在Spring Boot中如何来实现一个自定义的拦截器呢?

实现自定义拦截器

  如何自定义一个拦截器,首先我们知道在SpringMVC中有一个接口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 {}}

  会看到在这个接口中有三个方法如下

  • preHandler()方法:这个方法在控制器方法之前执行,这个方法返回一个布尔值,如果其返回值为ture的时候,标识可以继续往下执行后续的操作;如果返回false的时候,就会中断后续所有的操作,包括调用下一个拦截器或者控制器类中的方法执行等等。
  • postHandler()方法:这个方法会在调用控制器方法之后调用,在解析视图层之前调用,通过这个方法可以对请求中和视图模型中的内容进行修改。
  • afterCompletion()方法:这个方法会在整个的请求完成之后进行调用,也就是完成视图层渲染之后进行调用。主要用来记录一些用户的操作日志,完成一些资源清理的任务。

  下面我们就来通过一个小例子来看一下如何使用拦截器

防止重复提交拦截器

  在实际开发中,我们会遇到网络或者系统不稳定的情况,这个时候我们在页面上点击完提交按钮之后,系统并没有正常的返回提交成功,而用户接收不到提交成功的信号就会认为没有提交,就会重复点击提交按钮,造成在数据库中存在多个相同数据的情况。这个时候我们就可以通过拦截器来解决这种问题。

  代码如下,我们通过实现HandlerInterceptor接口来实现一个防止重复提交的拦截器。前面提到的,preHandle()方法的返回值会影响后续的调用,所以可以通过实现这个方法来控制拦截器是否执行后续的操作。

@Component
public abstract 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com