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

Filter快速入门 Java web

文章目录

    • Filter 快速入门
    • 登录演示

Filter 快速入门

  1. 定义Filter :定义一个类,是实现Filter 接口,并重写所有方法
  2. 配置Filter: Filter 类上加上 == @WebFilter == 注解,配置拦截资源的路径。引导类加上 == @ServletComponentScan == 开启Servlet 组件支持(也就是在spring boot 的启动类上面加上这个注释)
  3. 相关代码
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;@Slf4j
@WebFilter(urlPatterns = "/*")//表示所有路径
public class DemoFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//初始化方法,web服务器启动,创建Filter时,调用,只是调用一次Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)           throws IOException, javax.servlet.ServletException {//拦截到请求时候,调用该方法,可调用多次// 在此处记录请求信息 // 继续执行过滤器链chain.doFilter(request, response);}@Overridepublic void destroy() {//关闭服务器时候调用,只是调用一次/摧毁方法Filter.super.init(filterConfig);}
}  

登录演示

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;@Slf4j
@WebFilter(urlPatterns = "/*")//表示所有路径
public class DemoFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)           throws IOException, javax.servlet.ServletException {HttpServletRequest req = (HttpServletRequest) request;HttpServletResponse resp = (HttpServletResponse) Response;// 1. 获取请求URLString url = req.getRequestURL().toString();log.info("请求的url",url);//2.判断请求url中是否含有login,如果包含,就说明是登录操作,放行if(url.contains("login")){//这边建议与登录路径完全一致log.info("登录放行");chain.doFilter(request, response);return;}//3.获取请求头中的令牌(token)String jwt= req.getHeader("token");//4.判断令牌是否存在,如果不存在,返回错误结果(未登录)if(StringUtils.hasLength(jwt)){//看看hutool工具包,如果找不到该方法log.info("请求头token为空,未返回登录的信息")Result error = Result.error("NOT_LOGIN");//手动转换 对象 --> json  ---------> 使用阿里巴巴fast.json()String notLogin = JSONObject.toJSONString(error);resp.getWriter().write(notLogin);//返回字符串return}//5.解析token。如果解析失败,返回错误结果(未登录)try{JwtUtils.parseJWT(jwt);//报错就说明解析失败,jwt有改动,或者时间过期了,未报错,说明解析成功}catch(Exception e){e.printStackTrace();log.info("解析令牌失败,返回错误信息");log.info("请求头token为空,未返回登录的信息")Result error = Result.error("NOT_LOGIN");//手动转换 对象 --> json  ---------> 使用阿里巴巴fast.json()String notLogin = JSONObject.toJSONString(error);resp.getWriter().write(notLogin);//返回字符串return}//6.放行chain.doFilter(request, response);} 
}  
http://www.dtcms.com/a/289823.html

相关文章:

  • Compose笔记(三十七)--FilterChip
  • TVLT:无文本视觉-语言Transformer
  • c++ duiLib 显示一个简单的窗口
  • AMD处理器 5700G 矿卡RX580-8G 打英雄联盟怎么样
  • 洛谷 P10287 [GESP样题 七级] 最长不下降子序列-普及/提高-
  • 《P2680 [NOIP 2015 提高组] 运输计划》
  • 【66】MFC入门到精通——(CComboBox)下拉框选项顺序与添加顺序不一致
  • 前端静态资源免费cdn服务推荐
  • Dify极简部署手册
  • 30天打好数模基础-逻辑回归讲解
  • 7-大语言模型—指令理解:指令微调训练+模型微调
  • 【算法训练营Day15】二叉树part5
  • 编程研发工作日记
  • 050_Set接口(HashSet / TreeSet / LinkedHashSet)
  • 力扣面试150题--搜索插入位置
  • 某市公安局视频图像信息综合应用平台设计方案Word(446页)
  • AI产品经理面试宝典第40天:用户反馈处理与技术应用面试题与答法
  • 多校2+多校1的遗珠
  • 信道相关系数
  • 安装kali时出现“安装步骤失败“如何解决及后续软件安装
  • Python自动化测试项目实战
  • QT项目-仿QQ音乐的音乐播放器(第一节)
  • 什么是卡贴???
  • 国产电钢琴性价比实战选购指南
  • Python 虚拟环境与构建工具全景指南:功能介绍与对比分析
  • 基于Transformer的心理健康对话系统:从零构建AI心理咨询助手
  • 【全球甲烷估算模型】简化一箱模型(1-box model)
  • MySQL中的排序和分页
  • [simdjson] 实现不同CPU调度 | 自动硬件适配的抽象
  • C 语言经典编程题实战:从基础算法到趣味问题全解析