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

申请完域名怎么做网站湖北网站建设哪家专业

申请完域名怎么做网站,湖北网站建设哪家专业,大气门户网站,如何将域名指向网站一、概述 拦截器常用于在请求处理的不同阶段插入自定义逻辑。Spring MVC的拦截器作用是在请求到达控制器之前或之后进行拦截#xff0c;可以对请求和响应进行一些特定的处理。如#xff1a; 登录验证#xff1a;对于需要登录才能访问的网址#xff0c;使用拦截器可以判断…一、概述 拦截器常用于在请求处理的不同阶段插入自定义逻辑。Spring MVC的拦截器作用是在请求到达控制器之前或之后进行拦截可以对请求和响应进行一些特定的处理。如 登录验证对于需要登录才能访问的网址使用拦截器可以判断用户是否已登录如果未登录则跳转到登录页面。权限校验根据用户权限对部分网址进行访问控制拒绝未经授权的用户访问。请求日志记录请求信息例如请求地址、请求参数、请求时间等用于排查问题和性能优化。更改响应可以对响应的内容进行修改例如添加头信息、调整响应内容格式等。 二、拦截器和过滤器之间的区别 关于过滤器可以看我之前的文章过滤器Filter的介绍和使用。 我们很容易发现拦截器和过滤器十分相似他们都是对某一阶段的前后进行拦截进行一些处理。那么他们之间有什么不同呢 过滤器Filter是servlet中定义的而拦截器HandlerInterceptor则是由Spring MVC框架提供 二者所作用的范围不同 过滤器更注重在**请求和响应即在Servlet之前**的流程中进行处理可以修改请求和响应的内容例如设置编码和字符集、请求头、状态码等。拦截器则更加侧重于对控制器进行前置或后置处理在请求到达控制器之前或之后进行特定的操作例如打印日志、权限验证等。 三、自定义实现拦截器 Spring MVC 提供了 HandlerInterceptor 接口开发者可以通过实现这个接口来创建自定义的拦截器。其中定义了三个默认方法用于对不同阶段进行拦截 preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 在控制器方法执行前调用。返回 true 表示继续执行后续的拦截器和控制器方法返回 false 表示中断执行不再调用后续的拦截器和控制器方法。可以用于权限验证、日志记录等。 postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 在控制器方法执行后但在视图渲染前调用。可以用于修改 ModelAndView 对象添加额外的数据等。 afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 在整个请求处理完成后调用无论是否发生异常。可以用于资源清理、日志记录等。 创建自定义拦截器 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在控制器方法执行前调用System.out.println(preHandle... );//这里我们直接返回truereturn true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 在控制器方法执行后但在视图渲染前调用System.out.println(postHandle...);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在整个请求处理完成后调用System.out.println(AfterCompletion);} }此时要想要该拦截器生效我们还需在spring mvc配置文件中进行配置默认对所有控制器进行拦截 mvc:interceptorsmvc:interceptor!--设置要拦截的路径--mvc:mapping path/**/!--指定不进行拦截的路径--mvc:exclude-mapping path/test/!--配置自定义拦截器的类路径--bean classcom.example.MyInterceptor//mvc:interceptor /mvc:interceptors也可以通过在自定义 拦截器的类上加上component注解此时的配置文件为 mvc:interceptorsmvc:interceptor!--设置要拦截的路径--mvc:mapping path/**/!--指定不进行拦截的路径--mvc:exclude-mapping path/test/!--默认名字为类名首字母小写--ref beanmyInterceptor/ref/mvc:interceptor /mvc:interceptors四、多个拦截器的执行顺序 在 Spring MVC 中多个拦截器可以组成一个拦截器链按照注册配置顺序依次执行。假设现在按顺序注册三个拦截器Interceptor1Interceptor2Interceptor3。 当所有的拦截器的preHandle方法都返回true时 preHandle执行顺序Interceptor1-Interceptor2-Interceptor3 顺序执行postHandle执行顺序Interceptor3-Interceptor2-Interceptor1 逆序执行afterCompletion执行顺序Interceptor3-Interceptor2-Interceptor1 逆序执行 当某一个拦截器的preHandle方法返回false时这里假设为Interceptor3 preHandle执行顺序Interceptor1-Interceptor2-Interceptor3 顺序执行直到某一个拦截器返回falsepostHandle不执行控制器方法也不执行afterCompletion执行顺序Interceptor2-Interceptor1 返回false的拦截器之前的拦截器逆序执行 为什么是这样的顺序呢我们观察源码可以发现 preHandle源码分析 boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {//interceptorList是一个ArrayList集合按顺序存放了所有的拦截器 //下标从0开始从这里我们可以知道为什么是顺序执行的。//this.interceptorIndex i注意这个代码如果返回false则它的值则表示当前返回false的拦截器的下标for(int i 0; i this.interceptorList.size(); this.interceptorIndex i) {HandlerInterceptor interceptor (HandlerInterceptor)this.interceptorList.get(i);//如果返回falseif (!interceptor.preHandle(request, response, this.handler)) {//执行AfterCompletion这里我们就知道为什么不执行postHandle而执行AfterCompletion了this.triggerAfterCompletion(request, response, (Exception)null);return false;}}return true;}postHandle源码分析 void applyPostHandle(HttpServletRequest request, HttpServletResponse response, Nullable ModelAndView mv) throws Exception {//可以看到这里是从最后一个拦截器开始逆序遍历for(int i this.interceptorList.size() - 1; i 0; --i) {HandlerInterceptor interceptor (HandlerInterceptor)this.interceptorList.get(i);interceptor.postHandle(request, response, this.handler, mv);}}afterCompletion源码分析 void applyPostHandle(HttpServletRequest request, HttpServletResponse response, Nullable ModelAndView mv) throws Exception {//this.interceptorList.size() - 1表示当前返回false的拦截器的上一个的下标//注意这里是--i//这也就解释了为什么是返回false的拦截器之前的拦截器逆序执行for(int i this.interceptorList.size() - 1; i 0; --i) {HandlerInterceptor interceptor (HandlerInterceptor)this.interceptorList.get(i);interceptor.postHandle(request, response, this.handler, mv);}}
http://www.w-s-a.com/news/252587/

相关文章:

  • 上海城乡住房建设厅网站西安网站推广慧创科技
  • 做策划网站推广怎么写简历互联网公司手机网站
  • 怎么做宣传网站网站建设采购项目合同书
  • 网站的空间和域名备案做网站要会写什么
  • wap 网站源码企业网站被转做非法用途
  • 下载网站模板怎么使用做物流网站的公司
  • 网站 商城 app 建设建设银行江苏省行网站
  • 广州网站开发建设西安广告公司联系方式
  • 怎么用腾讯云服务器做网站个人网站开发视频
  • 网站建设技术代码坦洲网站建设公司哪家好
  • 阿里云对象存储做静态网站怎样做网站性能优化
  • 怎样做理财投资网站装修平面图用什么软件简单
  • 建手机wap网站大概多少钱苏州网站设计公司有哪些
  • 网站建设需求文件学校网站建设方案及报价
  • 网站开发一般多少钱wordpress打赏赞插件
  • 做中国o2o网站领导唐山网站制作软件
  • 门户网站简介做网站一天能接多少单
  • 论坛类网站建设遵义网站制作外包
  • vps服务器购买网站小视频做网站怎么赚钱
  • 网站用图片wordpress同步发布
  • 织梦图片自适应网站源码网页美工的设计要点
  • 渝快办官方网站wordpress产品图片怎么改
  • 高端网站特色深圳建网站哪
  • 宝塔搭建网站软文小故事200字
  • 公司网站设计免费虚拟主机网站源码
  • 怎样做好网站用户体验申请网站空间
  • 网站建设优化公司招聘福州网站建设思企
  • 设计网站会员wordpress rss聚合
  • 网站建设过程中的收获html5官方网站开发流程
  • 网站建设-信科网络h5美食制作网站模板下载