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

培训类网站模板智慧团建网页电脑版登录网站

培训类网站模板,智慧团建网页电脑版登录网站,wordpress获取自定义字段值,徐州小程序开发哪家好文章目录 🌹概念⭐作用 🎄快速入门⭐入门案例代码实现 🛸拦截路径🍔拦截器interceptor和过滤器filter的区别🎆登录校验 🌹概念 拦截器(Interceptor)是一种软件设计模式,…

文章目录

  • 🌹概念
    • ⭐作用
  • 🎄快速入门
    • ⭐入门案例代码实现
  • 🛸拦截路径
  • 🍔拦截器interceptor和过滤器filter的区别
  • 🎆登录校验

在这里插入图片描述

🌹概念

拦截器(Interceptor)是一种软件设计模式,用于在应用程序处理请求或响应时对其进行拦截和修改。拦截器可以在整个应用程序中使用,用于执行跨越多个层的通用任务,如身份验证、授权、缓存、日志记录、性能计量等。

在Web开发中,拦截器通常用于在请求到达控制器之前或响应返回客户端之前对其进行修改。例如,在Spring框架中,可以使用拦截器来实现身份验证和授权检查,记录请求和响应的日志,以及处理全局异常等。

拦截器的工作方式是通过将其注册到应用程序的处理管道中,并在请求或响应传递过程中执行相应的操作。拦截器可以访问请求上下文、响应上下文和处理程序对象,从而允许它们访问和修改请求或响应的属性和状态。拦截器还可以决定是否将请求和响应继续传递到下一个处理程序或终止请求。

总之,拦截器是一种非常有用的设计模式,可以帮助开发人员在应用程序中实现通用的功能,提高代码的可重用性和可维护性。

⭐作用

请添加图片描述

拦截器是一种非常有用的设计模式,它可以在应用程序处理请求或响应时对其进行拦截和修改。以下是拦截器的几个常见用途:

  • 身份验证和授权:拦截器可以用于检查请求是否具有适当的凭据,并根据需要拒绝或允许请求。这使得开发人员能够轻松地实现身份验证和授权功能。
  • 缓存:拦截器可以用于缓存请求或响应数据,以便加快应用程序的性能。例如,在Web应用程序中,可以使用拦截器缓存静态资源,如CSS文件和图像。
  • 日志记录:拦截器可以用于记录请求和响应的详细信息,以便开发人员能够更好地了解应用程序的行为和性能。
  • 性能计量:拦截器可以用于测量应用程序的性能,并识别可能的瓶颈。例如,在Web应用程序中,可以使用拦截器跟踪页面加载时间,并标识慢速查询或资源。
  • 异常处理:拦截器可以用于处理应用程序中的异常情况,并提供友好的错误消息。例如,在Web应用程序中,可以使用拦截器捕获异常并显示自定义错误页面。

🎄快速入门

请添加图片描述

⭐入门案例代码实现

代码脚手架我传到网盘里面了,需要的同学请自取
我用夸克网盘分享了「tlias-web-management」,点击链接即可保存。
链接:https://pan.quark.cn/s/b98922faf182


首先我们创建interceptor类
在这里插入图片描述
写入下面的代码

package com.itheima.interceptor;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;@Component
public class LoginCheckInterceptor implements HandlerInterceptor {@Override //目标资源方法运行前运行 返回true,放行  返回false 拦截public boolean preHandle(HttpServletRequest  request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle");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");}
}

在这里插入图片描述


创建配置类
在这里插入图片描述

写入下面的代码

package com.itheima.config;import com.itheima.interceptor.LoginCheckInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration  //表明这个是配置类
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate LoginCheckInterceptor loginCheckInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//加入拦截器(加入的拦截器就是我们刚刚创建的拦截器)registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**");}
}

在这里插入图片描述

入门案例就完成了

🛸拦截路径

通过配置拦截路径,我们可以设置拦截什么路径,放行什么路径

请添加图片描述

🍔拦截器interceptor和过滤器filter的区别

接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HanglerInterceptor接口
拦截范围不同:过滤器filter会拦截所有的资源,而Interceptor中会拦截Spring环境的资源
请添加图片描述

🎆登录校验

请添加图片描述

登录操作,我们需要使用LoginCheckFilter类,我们修改一下里面的代码

下面是修改后的代码

package com.itheima.interceptor;import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
@Slf4j
public class LoginCheckInterceptor implements HandlerInterceptor {@Override //目标资源方法运行前运行 返回true,放行  返回false 拦截public boolean preHandle(HttpServletRequest  req, HttpServletResponse resp, Object handler) throws Exception {//获取请求的urlString url = req.getRequestURL().toString();log.info("请求的url:{}",url);//判断请求url中是否包含有login,如果包含,说明是登录操作,进行放行if(url.contains("login")){log.info("登录操作,放行");return true;}//获取请求头的令牌(token)String jwt=req.getHeader("token");//判断令牌是否存在,如果不存在,返回错误结果(未登录)//hasLength()方法判断字符串是否有长度(是否为空)if (!StringUtils.hasLength(jwt)){log.info("请求头token为空,返回未登录的信息");Result error= Result.error("NOT_LOGIN");//使用阿里巴巴的fastJSON工具包,将对象转成json字符串String notLogin= JSONObject.toJSONString(error);//响应给浏览器resp.getWriter().write(notLogin);return false;}//解析token,如果解析失败,返回登录结果//jwt令牌try {JwtUtils.parseJWT(jwt);}catch (Exception e){e.printStackTrace();log.info("解析token失败,返回未登录的错误信息");Result error= Result.error("NOT_LOGIN");//使用阿里巴巴的fastJSON工具包,将对象转成json字符串String notLogin= JSONObject.toJSONString(error);//响应给浏览器resp.getWriter().write(notLogin);return false;}//放行log.info("令牌合法,放行");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");}
}

在这里插入图片描述

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

http://www.yayakq.cn/news/443362/

相关文章:

  • 做网站动态背景的图片一般小程序开发多少钱
  • 建设制作网站深圳网站设计公司专业吗
  • 深圳市专业网站建设电子商务网站建设评估的指标有哪些?
  • 做视频网站视频存放在哪里亚马逊平台
  • 婚纱摄影网站html模板做企业网站都需要注意哪点
  • 百度网站推广排名优化下载宝硬盘做网站
  • 网站发帖做业务网站 文件夹结构
  • 超链接网站怎么做怎么修改网站的关键词
  • 域名服务商网站佛山网站建设专业定制
  • 代写网站建设合同用笔记本做网站服务器
  • 寿县住房与城乡建设局网站wordpress pixvideo
  • 网站建设遵循的原则站点搜索
  • 做网站 如何注册公司阿里云一键wordpress
  • 门户网站开发教程网站推广软文公司
  • 上海网站建设-中国互联门户网站后台建设模块
  • 上海沪港建设咨询有限公司网站顶尖的设计网站
  • 商城网站如何建设方案腾讯企业qq注册中心
  • 网站后台网址后缀深圳建科院公司网站
  • 高端网站建设哪家公司好国际情况最新消息
  • 网站建设管理系统免费网站招聘网站开发的背景
  • 企业网站排名优化公司网站建设及维护
  • 道滘镇仿做网站做网站买流量
  • 枣庄手机网站开发公司wordpress 模板汉化
  • 聊城网站建设代理商余姚建设网站
  • 做网站的大公司旅行社服务网点能否做网站
  • 番禺有经验的网站建设wordpress图片七牛存储
  • 室内设计培训机构排行网站代码优化方案
  • 专业企业网站建设教育类型网站
  • 企业网站能个人备案吗网站关键词放哪
  • 顶做抱枕网站it运维管理软件