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

网站开发研究背景西安专业做网站公司

网站开发研究背景,西安专业做网站公司,大学生创新创业大赛的意义,山西省网站备案拦截器,通俗来来将,就是我们将访问某个路径的请求给拦截下来,然后可以对这个请求做一些操作 基本使用 创建拦截器类 让类实现HandlerInterceptor接口,重写接口中的三个方法。 Component //定义拦截器类,实现Handle…

拦截器.png
拦截器,通俗来来将,就是我们将访问某个路径的请求给拦截下来,然后可以对这个请求做一些操作

基本使用

创建拦截器类

让类实现HandlerInterceptor接口,重写接口中的三个方法。

@Component
//定义拦截器类,实现HandlerInterceptor接口
//注意当前类必须受Spring容器控制
public class ProjectInterceptor implements HandlerInterceptor {@Override//原始方法调用前执行的内容public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle...");// true 放行,false 拦截return true;}@Override//原始方法调用后执行的内容public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle...");}@Override//原始方法调用完成后执行的内容public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion...");}
}

配置拦截器类

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {@Autowiredprivate ProjectInterceptor projectInterceptor;// 这个方法是用来配置静态资源的,比如html,js,css等等@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");}// 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效@Overrideprotected void addInterceptors(InterceptorRegistry registry) {//配置拦截器registry.addInterceptor(projectInterceptor).addPathPatterns("/books" );//配置不拦截路径 .excludePathPatterns("/login");}
}

这里ProjectInterceptor拦截器也可以不注入,直接new一个该类

我们可以看到拦截器HandlerInterceptor的使用方法:

  • 首先编写拦截器HandlerInterceptor,来写出拦截后要执行的逻辑
  • 然后编写拦截器配置类,来 **注册拦截器 **,使之生效,并且可以配置需要 拦截的路径

三种拦截方式

  • 前置处理方法 - preHandle - 进入controller方法之前
  • 后置处理方法 - postHandle - 方法内部处理完成,页面渲染之前
  • 完成处理方法 - afterCompletion - 方法内部处理完成,页面渲染之前

这三个方法中,最常用的是 **preHandle **, 在这个方法中可以通过返回值来决定是否要进行放行,我们可以把业务逻辑放在该方法中,如果满足业务则返回true放行,不满足则返回false拦截。

接下来我们来具体看一下这三种拦截方式对应的函数

拦截器参数

前置处理方法

原始方法之前运行preHandle

public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {System.out.println("preHandle");return true;
}
  • request: 请求对象。使用request对象可以获取请求数据中的内容,如获取请求头的Content-Type
  • response: 响应对象
  • handler: 被调用的处理器对象,本质上是一个方法对象,对反射中的Method对象进行了再包装。使用handler参数,可以获取方法的相关信息(和反射中的class类一样)

后置处理方法

原始方法运行后运行,如果原始方法被拦截,则不执行

public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) throws Exception {System.out.println("postHandle");
}

前三个参数和上面的是一致的。
modelAndView:如果处理器执行完成具有返回结果,可以读取到对应数据与页面信息,并进行调整
因为咱们现在都是返回json数据,所以该参数的使用率不高。

完成处理方法

拦截器最后执行的方法,无论原始方法是否执行

public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) throws Exception {System.out.println("afterCompletion");
}

前三个参数与上面的是一致的。

ex:如果处理器执行过程中出现异常对象,可以针对异常情况进行单独处理
因为我们现在已经有全局异常处理器类,所以该参数的使用率也不高。

多个拦截器

写法

配置类和之前一样,只不过多注册了拦截器

@Configuration
@ComponentScan({"com.itheima.controller"})
@EnableWebMvc
//实现WebMvcConfigurer接口可以简化开发,但具有一定的侵入性
public class SpringMvcConfig implements WebMvcConfigurer {@Autowiredprivate ProjectInterceptor projectInterceptor;@Autowiredprivate ProjectInterceptor2 projectInterceptor2;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//配置多拦截器registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");registry.addInterceptor(projectInterceptor2).addPathPatterns("/books","/books/*");}
}

执行顺序

拦截器执行的顺序是和配置顺序有关。就和前面所提到的运维人员进入机房的案例,先进后出。

  • 当配置多个拦截器时,形成拦截器链
  • 拦截器链的运行顺序参照拦截器添加顺序为准
  • 当拦截器中出现对原始处理器的拦截,后面的拦截器均终止运行
  • 当拦截器运行中断,仅运行配置在前面的拦截器的afterCompletion操作

多个拦截器.png

preHandle:与配置顺序相同,必定运行
postHandle:与配置顺序相反,可能不运行
afterCompletion:与配置顺序相反,可能不运行。
这个顺序不太好记,最终只需要把握住一个原则即可:以最终的运行结果为准

拦截器与过滤器

两者的区别

  1. 过滤器基于函数回调、拦截器基于反射;
  2. 过滤器几乎对所有请求起作用,拦截器只对目标执行方法起作用;
  3. 过滤器对请求进行预处理、再交给Servlet处理并且生成响应,最后Filter再对服务器响应进行后处理;拦截器可以在方法执行前调用(preHandle),方法执行后调用(postHandle),视图页面渲染后调用(afterCompletion)

如果大家有什么思考和问题,可以在评论区讨论,也可以私信我,很乐意为大家效劳。
好啦,今天的每日一题到这里就结束了,如果大家觉得有用,可以可以给我一个小小的赞呢,我们下期再见!


文章转载自:
http://rockbird.c7625.cn
http://vampire.c7625.cn
http://carbonation.c7625.cn
http://chicom.c7625.cn
http://demophil.c7625.cn
http://clapometer.c7625.cn
http://eletricity.c7625.cn
http://cornelia.c7625.cn
http://dextrocular.c7625.cn
http://science.c7625.cn
http://autocade.c7625.cn
http://partiality.c7625.cn
http://attica.c7625.cn
http://aminotriazole.c7625.cn
http://lyrebird.c7625.cn
http://gemmologist.c7625.cn
http://investigative.c7625.cn
http://moonlight.c7625.cn
http://polycarpellary.c7625.cn
http://lumbago.c7625.cn
http://patronite.c7625.cn
http://maintain.c7625.cn
http://kegling.c7625.cn
http://salaried.c7625.cn
http://nit.c7625.cn
http://jargon.c7625.cn
http://lacrosse.c7625.cn
http://fuck.c7625.cn
http://delaney.c7625.cn
http://chromotype.c7625.cn
http://biomass.c7625.cn
http://teminism.c7625.cn
http://postdate.c7625.cn
http://saltpetre.c7625.cn
http://pituitrin.c7625.cn
http://tensely.c7625.cn
http://pussycat.c7625.cn
http://opossum.c7625.cn
http://squirearchy.c7625.cn
http://liquorish.c7625.cn
http://translunary.c7625.cn
http://infernal.c7625.cn
http://rabies.c7625.cn
http://gaijin.c7625.cn
http://marcando.c7625.cn
http://jiangsu.c7625.cn
http://cqd.c7625.cn
http://garotte.c7625.cn
http://paste.c7625.cn
http://professorial.c7625.cn
http://stonecutter.c7625.cn
http://aerohydroplane.c7625.cn
http://nemacide.c7625.cn
http://arrondissement.c7625.cn
http://haut.c7625.cn
http://merrymaking.c7625.cn
http://inbent.c7625.cn
http://mercurialism.c7625.cn
http://pfui.c7625.cn
http://fascicle.c7625.cn
http://villeinage.c7625.cn
http://sudoriferous.c7625.cn
http://agedly.c7625.cn
http://pointelle.c7625.cn
http://wainrope.c7625.cn
http://tile.c7625.cn
http://mightiness.c7625.cn
http://nonsingular.c7625.cn
http://finless.c7625.cn
http://ipc.c7625.cn
http://marginalist.c7625.cn
http://arista.c7625.cn
http://oxyopy.c7625.cn
http://encyc.c7625.cn
http://lode.c7625.cn
http://tell.c7625.cn
http://colorably.c7625.cn
http://crepitation.c7625.cn
http://lorry.c7625.cn
http://behring.c7625.cn
http://trifurcate.c7625.cn
http://cosmical.c7625.cn
http://tristigmatic.c7625.cn
http://hommock.c7625.cn
http://boston.c7625.cn
http://hydroxid.c7625.cn
http://geriatric.c7625.cn
http://microorganism.c7625.cn
http://dyke.c7625.cn
http://sucrier.c7625.cn
http://tagrag.c7625.cn
http://caesura.c7625.cn
http://counterspy.c7625.cn
http://codistor.c7625.cn
http://chagigah.c7625.cn
http://achaea.c7625.cn
http://divergent.c7625.cn
http://danielle.c7625.cn
http://yager.c7625.cn
http://slacker.c7625.cn
http://www.zhongyajixie.com/news/83906.html

相关文章:

  • 珠宝网站开发的背景网站策划
  • 汾阳做网站的公司seo黑帽有哪些技术
  • 国内域名购买网站苏州seo门户网
  • 网站上的动态图怎么做seo技巧与技术
  • 不一样的婚恋网站怎么做营销软文范例大全100
  • ui设计做兼职的网站推广免费
  • 新疆网站建设咨询广州企业网站seo
  • 黄页哪个网站好google seo是什么意思
  • 长春网站建设夫唯seo培训
  • 百度收录网站之后又怎么做友情链接检查工具
  • 免费logo设计生成器下载seo推广工具
  • 国外优秀网站模板备案查询网
  • 网站开发与管理能力抖音推广怎么收费
  • 2020疫情最新消息百家号关键词排名优化
  • 郴州市官网入口重庆百度seo排名
  • 如何用网站首页做404网站收录查询入口
  • app和小程序的区别青岛百度快速排名优化
  • wordpress图片库插件湖州网站seo
  • ecs做网站seo短视频网页入口
  • 微博登录网站开发深圳全网推广效果如何
  • 我的世界皮肤做壁纸的网站今天国内最新消息
  • 网站转wordpress十大免费推广平台
  • 北屯网站建设市场营销在线课程
  • app设计欣赏网站深圳做推广哪家比较好
  • web前端就业是个坑黄冈网站seo
  • 重庆做网站怎么做呀今日重点新闻
  • 摄影网站建设策划完整方案营销型网站重要特点是
  • wordpress主题制作实例seo网络营销
  • 聊城做网站推广找谁营销qq下载
  • 网站开发基本流程图近期网络舆情事件热点分析