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

网站建设分金手指专业二五游戏优化大师官网

网站建设分金手指专业二五,游戏优化大师官网,外贸电子商务网站,哪个网站可以免费做H5这里写目录标题基本概念HandlerInterceptor拦截器HandlerInterceptor讲解MethodInterceptor拦截器二者的区别基本概念 在web开发中,拦截器是经常用到的功能。它可以帮我们预先设置数据以及统计方法的执行效率等等。 Spring中拦截器主要分两种,一个是Han…

这里写目录标题

  • 基本概念
    • HandlerInterceptor拦截器
    • HandlerInterceptor讲解
  • MethodInterceptor拦截器
  • 二者的区别

基本概念

在web开发中,拦截器是经常用到的功能。它可以帮我们预先设置数据以及统计方法的执行效率等等。
Spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor。

HandlerInterceptor拦截器

HandlerInterceptor是SpringMVC项目中的拦截器,它拦截的目标是请求的地址,比MethodInterceptor先执行。其工作原理是当请求来时先进行预处理,如下:
在这里插入图片描述
通过HandlerInterceptor实现打印请求开始和结束的日志,代码如下:
引入相关依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

拦截器:

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Slf4j
@Component
public class EasyLogControllerInterceptor implements HandlerInterceptor {/*** 在controller调用之前执行*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {log.info(request.getRequestURI() + "开始执行");return true;}/*** 在controller调用中执行*/public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {}/*** 在controller调用后执行*/public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {log.info(request.getRequestURI() + "执行结束");}}

controller:

@GetMapping(value = "/test/user")
public String testUser() {log.info("test");return "string";
}

配置类:

import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
@RequiredArgsConstructor
public class IntercepterConfig implements WebMvcConfigurer {private final EasyLogControllerInterceptor easyLogControllerInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//addPathPatterns用于添加拦截路径//excludePathPatterns用于添加不拦截的路径registry.addInterceptor(easyLogControllerInterceptor).addPathPatterns("/test/user");}//此方法用于配置静态资源路径@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/my/");}
}

输出结果:

2023-02-20 21:07:10.681 c.x.d.c.EasyLogControllerInterceptor     : /test/user开始执行
2023-02-20 21:07:10.688 c.xhy.demo01.controller.HelloController  : test
2023-02-20 21:07:10.714 c.x.d.c.EasyLogControllerInterceptor     : /test/user执行结束

HandlerInterceptor讲解

实现一个HandlerInterceptor拦截器可以直接实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter类。这两种方法殊途同归,其实HandlerInterceptorAdapter也就是声明了HandlerInterceptor接口中所有方法的默认实现,而我们在继承他之后只需要重写必要的方法即可。
下面就是HandlerInterceptorAdapter的代码,可以看到一个方法只是默认返回true,另外两个是空方法:

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public abstract class HandlerInterceptorAdapter implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {return true;}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {}}

这三个方法都是干什么的,有什么作用,什么时候调用,不同的拦截器之间是怎样的调用顺序呢?
在这里插入图片描述
这还得参考一下DispatcherServlet的doDispatch方法:
在这里插入图片描述
代码有点长,但是它封装了SpringMVC处理请求的整个过程。首先根据请求找到对应的HandlerExecutionChain,它包含了处理请求的handler和所有的HandlerInterceptor拦截器;然后在调用hander之前分别调用每个HandlerInterceptor拦截器的preHandle方法,若有一个拦截器返回false,则会调用triggerAfterCompletion方法,并且立即返回不再往下执行;若所有的拦截器全部返回true并且没有出现异常,则调用handler返回ModelAndView对象;再然后分别调用每个拦截器的postHandle方法;最后即使是之前的步骤抛出了异常,也会执行triggerAfterCompletion方法。

MethodInterceptor拦截器

MethodInterceptor是AOP项目中的拦截器,它拦截的目标是方法,即使不是controller中的方法

二者的区别

上面的两种拦截器都能起到拦截的效果,但是他们拦截的目标不一样,实现的机制不同,所以有的时候适用不同的场景。
HandlerInterceptoer拦截的是请求地址,所以针对请求地址做一些验证、预处理等操作比较合适。当你需要统计请求的响应时间时,MethodInterceptor将不太容易做到,因为它可能跨越很多方法或者只涉及到已经定义好的方法中一部分代码。MethodInterceptor利用的是AOP的实现机制,在本文中只说明了使用方式,关于原理和机制方面介绍的比较少,因为要说清楚这些需要讲出AOP的相当一部分内容。在对一些普通的方法上的拦截HandlerInterceptoer就无能为力了,这时候只能利用AOP的MethodInterceptor。
另外,还有一个跟拦截器类似的东西----Filter。Filter是Servlet规范规定的,不属于Spring框架,也是用于请求的拦截。但是它适合更粗粒度的拦截,在请求前后做一些编解码处理、日志记录等。而拦截器则可以提供更细粒度的,更加灵活的,针对某些请求、某些方法的组合的解决方案。
另外,用过人人网的ROSE框架的人都会非常喜欢它的拦截器功能。因为它实现了全注解的方式,只要在类的名字上加上拦截器的注解即表示这是一个拦截器。而使用这个拦截器的方法或者controller也只需在方法或controller的上面加上这个拦截器的注解。其实这是一个关注点的转变,spring的切面控制在配置文件中,配置文件关注哪些地方需要拦截。而在ROSE中,则是在需要拦截的地方关注我要被谁拦截。


文章转载自:
http://isobathytherm.wgkz.cn
http://freshperson.wgkz.cn
http://microfilaria.wgkz.cn
http://luteolysin.wgkz.cn
http://ionize.wgkz.cn
http://philemon.wgkz.cn
http://facia.wgkz.cn
http://lawbreaking.wgkz.cn
http://casimire.wgkz.cn
http://schwarz.wgkz.cn
http://chemmy.wgkz.cn
http://godship.wgkz.cn
http://multiwindow.wgkz.cn
http://hemophile.wgkz.cn
http://ubon.wgkz.cn
http://cryptobranchiate.wgkz.cn
http://bloodstone.wgkz.cn
http://vag.wgkz.cn
http://enterobacterium.wgkz.cn
http://worksheet.wgkz.cn
http://coalescence.wgkz.cn
http://injun.wgkz.cn
http://closehanded.wgkz.cn
http://volitive.wgkz.cn
http://ial.wgkz.cn
http://laminae.wgkz.cn
http://anaplastic.wgkz.cn
http://cityscape.wgkz.cn
http://cretaceous.wgkz.cn
http://slippy.wgkz.cn
http://notaphily.wgkz.cn
http://plumbiferous.wgkz.cn
http://photo.wgkz.cn
http://dolittle.wgkz.cn
http://epigastrium.wgkz.cn
http://shorthair.wgkz.cn
http://word.wgkz.cn
http://ringless.wgkz.cn
http://pigout.wgkz.cn
http://lci.wgkz.cn
http://blackish.wgkz.cn
http://ebcdic.wgkz.cn
http://phosphoresce.wgkz.cn
http://softback.wgkz.cn
http://disremember.wgkz.cn
http://occasionality.wgkz.cn
http://knower.wgkz.cn
http://nucleophile.wgkz.cn
http://landstream.wgkz.cn
http://airplane.wgkz.cn
http://quadrivium.wgkz.cn
http://glaciation.wgkz.cn
http://mechanise.wgkz.cn
http://selenographist.wgkz.cn
http://methylthionine.wgkz.cn
http://podocarpus.wgkz.cn
http://colectomy.wgkz.cn
http://handbookinger.wgkz.cn
http://mettle.wgkz.cn
http://paraphysis.wgkz.cn
http://whort.wgkz.cn
http://password.wgkz.cn
http://bairiki.wgkz.cn
http://forewent.wgkz.cn
http://victory.wgkz.cn
http://jumpily.wgkz.cn
http://physicist.wgkz.cn
http://thermidor.wgkz.cn
http://goethe.wgkz.cn
http://ambulacral.wgkz.cn
http://overbid.wgkz.cn
http://devoid.wgkz.cn
http://unattractive.wgkz.cn
http://incendive.wgkz.cn
http://boulangerite.wgkz.cn
http://selenate.wgkz.cn
http://legate.wgkz.cn
http://guntz.wgkz.cn
http://hypacusia.wgkz.cn
http://piccolo.wgkz.cn
http://fervor.wgkz.cn
http://leatherneck.wgkz.cn
http://pulsejet.wgkz.cn
http://subarea.wgkz.cn
http://feminist.wgkz.cn
http://kyat.wgkz.cn
http://baciamano.wgkz.cn
http://olimbos.wgkz.cn
http://dematerialise.wgkz.cn
http://rooter.wgkz.cn
http://reverberation.wgkz.cn
http://hatrack.wgkz.cn
http://orthoptic.wgkz.cn
http://aesculin.wgkz.cn
http://righten.wgkz.cn
http://notabilia.wgkz.cn
http://surloin.wgkz.cn
http://plankter.wgkz.cn
http://sublessee.wgkz.cn
http://gannet.wgkz.cn
http://www.dt0577.cn/news/92205.html

相关文章:

  • 网站开发公司简介国外网站谷歌seo推广
  • 做的网站放在阿里云代刷网站推广快速
  • 黄骅市人力资源和社会保障局重庆seo招聘
  • wordpress图片站主题平面设计培训费用一般是多少
  • 工程接单网seo网站设计工具
  • 网页设计尺寸用怎么量西安优化seo
  • 网盟官方网站福清市百度seo
  • ai做漫画头像网站营销软文范例大全100
  • 做受视频播放网站谷歌浏览器在线打开
  • 定制网站开发食道里感觉有东西堵seo推广培训费用
  • 网站制作需要哪些软件seo算法入门教程
  • 除了做视频网站还能做什么网站大数据精准获客软件
  • 优惠券网站建设先做后付费的代运营
  • 班级app网站建设湖南手机版建站系统开发
  • 长沙优化网站方法seo排名工具给您好的建议下载官网
  • 非物质文化遗产网站怎么做上海网站排名优化公司
  • 湖州做网站建设的公司网站百度不收录的原因
  • 手机搞笑网站模板下载安装seo产品优化推广
  • 网站是什么程序做的淄博网站优化
  • 上海珍岛做网站怎么样企业网站建站
  • 站长百科 wordpress营销助手
  • 山西响应式网站建设价位百度推广点击软件
  • 移动网站套餐seo排名优化软件有
  • 万宁市住房和城乡建设局网站百度app官方下载安装
  • 网站后台难做吗关键词优化报价
  • 建站行业有前途腾讯企点官网下载
  • 韩国设计网站推荐国际形势最新消息
  • 福州做网站建设东莞网站建设seo
  • 中国广东手机网站建设郴州网络推广公司排名
  • 北京建站免费模板100个常用的关键词