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

数据需求 网站建设tool站长工具

数据需求 网站建设,tool站长工具,网站建设 经典书籍,众网站拦截器(Interceptor) 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。 作用:拦截请求,在指定的方法调用前后,根据业务需要执行…

拦截器(Interceptor)

概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。

作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。

快速入门

定义拦截器

实现HandlerInterceptor接口,并重写其所有方法。 

@Component
public class LoginInterceptor implements HandlerInterceptor {@Override //目标方法执行前的执行,返回true放行,返回false不放行public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return HandlerInterceptor.super.preHandle(request, response, handler);}@Override //目标方法执行后执行public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Override //视图渲染执行后执行,最后执行public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

注册拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {@AutowiredLoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/**");}
}

拦截器-拦截路径

拦截路径

含义

举例

/*

一级路径

能匹配/depts,/emps,/login,不能匹配 /depts/1

/**

任意级路径

能匹配/depts,/depts/1,/depts/1/2

/depts/*

/depts下的一级路径

能匹配/depts/1,不能匹配/depts/1/2,/depts

/depts/**

/depts下的任意级路径

能匹配/depts,/depts/1,/depts/1/2,不能匹配/emps/1

拦截器-执行流程

 Filter与Interceptor区别

  • 接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。
  • 拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源。

 登录验证

  • 获取请求url。 判断请求url中是否包含login,如果包含,说明是登录操作,放行。
  • 获取请求头中的令牌(token)。
  • 判断令牌是否存在,如果不存在,返回错误结果(未登录)。
  • 解析token,如果解析失败,返回错误结果(未登录)。
  • 放行。

                                     

Interceptor的实现

@Slf4j
@Component
public class LoginInterceptor implements HandlerInterceptor {@Override //目标方法执行前的执行,返回true放行,返回false不放行public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取urlString url = request.getRequestURL().toString();log.info("url路径:{}",url);//获取tokenString token = request.getHeader("token");log.info("token:{}",token);//如果没有Tokenif (!StringUtils.hasLength(token)) {extracted(response);return false;}//解析tokentry {JwtUtils.parseJwt(token);} catch (Exception e) {e.printStackTrace();extracted(response);return false;}return true;}private void extracted(HttpServletResponse response) throws IOException {Result noLogin = Result.error("用户未登录");response.setCharacterEncoding("UTF-8");response.getWriter().write(JSONObject.toJSONString(noLogin));}@Override //目标方法执行后执行public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Override //视图渲染执行后执行,最后执行public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

配置Interceptor

@Configuration
public class WebConfig implements WebMvcConfigurer {@AutowiredLoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login");}
}

测试

 

 

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

相关文章:

  • 创建虚拟网站做点击做网站价格
  • 招标代理公司注册需要什么条件seo技术培训中心
  • 綦江建站哪家正规上海优化排名网站
  • 我们一起做网站网页制作网站制作
  • 网站年费发稿吧
  • 具有价值的广州做网站谷歌paypal官网
  • 做个企业网站要多少钱阻断艾滋病的药有哪些
  • 做网站和做推广的区别百度加盟
  • 网站建设手机端页面模板公关公司
  • 酒店网站开发协议艺考培训
  • 网站怎么做二维码链接2345网址导航官网官方电脑版下载
  • 备案成功后多久可以打开网站手机怎么搭建属于自己的网站
  • 深圳网站制作服防控措施持续优化
  • 做网站多少钱zwnet网络营销专业学什么课程
  • 情趣官方网站怎么做代理重庆百度开户
  • 人大网站建设报价单app推广接单发布平台
  • 兰州市网站广州营销型网站
  • wordpress添加站点网络营销专业培训学校
  • 提供网站建设电话怎么样才能引流客人进店
  • 全球最好的黄页网站奇零seo赚钱培训
  • 可以做试卷的网站软文广告案例500字
  • 互动型网站成功例子深圳网站seo公司
  • 网站怎么做展现量百度统计怎么使用
  • 惠州附近公司做网站建设多少钱微信软文广告经典案例
  • 关于网站开发的个人小结夫唯seo怎么样
  • wordpress 全站通知武汉百度
  • 网站建设信息稿江苏免费关键词排名外包
  • 镇江集团网站建设成都网站制作
  • 网站如何做渗透测试深圳抖音推广公司
  • 十堰网站建设哪家好模板网站好还是自助建站好