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

springboot配置过滤器解决html资源路径和接口路径冲突问题

比如:

html文件使用  /

接口路径使用  /api

首先配置文件里肯定配置范围最大的根路径

server:port: 80servlet:context-path: /

 过滤器代码

@Slf4j
public class RequestSeparationFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@SneakyThrows@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest)request;HttpServletResponse httpResponse = (HttpServletResponse)response;String uri=httpRequest.getRequestURI();//请求路径String apiPath="/api";//接口路径前缀if(apiPath!=null&&httpRequest.getRequestURI().startsWith(apiPath+(apiPath.endsWith("/")?"":"/"))){/**  接口请求分离*/uri=uri.substring(apiPath.length());//删掉请求前缀api,这样接口代码写的时候注解映射不需要加apirequest.getRequestDispatcher(uri).forward(request, response);}else{/**  html资源请求分离*///正常文件资源,有后缀名的if(uri.substring(uri.lastIndexOf("/")).contains(".")){chain.doFilter(request, response);}//没有后缀名的,但是以斜杠结尾,自动补全请求文件路径:index.htmlelse if(uri.endsWith("/")){uri+="index.html";request.getRequestDispatcher(uri).forward(request, response);}else{//其他的必须重定向到带斜杠的地址,否则前台浏览器自己解析相对路径会出问题(对后台无影响)httpResponse.sendRedirect(httpRequest.getContextPath() + uri+"/");}}}@Overridepublic void destroy() {}
}

使用转发不会重新触发过滤器,而是直接进入controller层

注解映射也不需要加  /api   只需要写/api后面的路径即可 如 @RequestMapping("/login")

这样/login请求就会转发到  /login/index.html   

而/api/login请求会转发到/login接口上

http://www.lryc.cn/news/503825.html

相关文章:

  • 在IDE中使用Git
  • 【AIGC进阶-ChatGPT提示词副业解析】反向心理学在沟通中的运用:激将法的艺术
  • JeecgBoot passwordChange 任意用户密码重置漏洞复现
  • 【智体OS】官方上新发布智体机器人:使用rtrobot智体应用远程控制平衡车机器人
  • Blazor(.razor)+VUE+elementUI适合一起用吗
  • SpringBoot左脚进门之Maven管理家
  • 188-下翻便携式6U CPCI工控机箱
  • Ubuntu 挂载目录
  • 基于IEEE 802.1Qci的时间敏感网络(TSN)主干架构安全分析及异常检测系统设计
  • 2024年食堂采购系统源码技术趋势:如何开发智能的供应链管理APP
  • zotero安装教程(包括茉莉花插件)
  • webpack4 - 配置文件分离(详细教程)
  • MongoDB 分片
  • PHP加载MySQL扩展
  • 期末复习-计算机网络篇SCAU
  • 使用LLM进行股价预测(附代码)
  • 分支限界笔记
  • PHP Cookie
  • Java后端面试场景题汇总
  • 【量化中的复权数据详解】
  • YOLO简史
  • 低通滤波器,高通滤波器,公式
  • 深入了解IPv6——光猫相关设定:DNS来源、DHCPv6服务、前缀来源等
  • 前端国际化实战:从需求到落地的完整实践
  • React的状态管理库-Redux
  • 【Android学习】RxJava
  • Pycharm访问MySQL数据库·上
  • 【CUDA】CUBLAS
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-predict.py
  • 细说Flash存储芯片W25Q128FW和W25Q16BV