spring boot controller 增加指定前缀的两种方法

1、增加配置

server.servlet.context-path: /api
这种是最常见的,加上这个配置后,所有的url,必须带上/api的前缀,才能访问到该url

2、过滤拦截

这种是加上/api也可以访问,不加/api也可以访问,适合项目重构修改的适合用


import org.apache.commons.lang.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;@Configuration
@Order(1)
@WebFilter(filterName = "urlFilter", urlPatterns = "/api/*")
public class UrlFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;String servletPath = httpRequest.getServletPath();if (StringUtils.isNotBlank(servletPath) && servletPath.startsWith("/api")) {String newPath = servletPath.substring(4);request.getRequestDispatcher(newPath).forward(request, response);} else {chain.doFilter(request, response);}}@Overridepublic void destroy() {}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA】分享一些FPGA视频图像处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

错误记录:Current request is not a multipart request

springboot 报错:Current request is not a multipart request 这个一般是controller是带有上传文件的服务,类似RequestParam MultipartFile[] file 解决: 首先检查请求头中的Content-Type是否设置对,如果把Content-Type设置成a…

java 使用gzip压缩和解压 传输文件必备

java gzip 压缩解压工具类,开箱即用 gzip原理看我另外一篇介绍 压缩效果直接看图: package com.yeahmobi.datacheck.util;import java.io.*; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream;public class CompressUtil…

spring boot maven项目返回值乱码的解决方法

spring boot maven项目返回值乱码的解决方法 1、先看乱码效果: spring boot maven项目,返回值乱码,如下图: 控制台打印log乱码,如下图: 有swagger的话,swagger文档乱码,如下图&…

云服务和serverless

云服务中的一些基础概念 IaaS(Infrastructure as a server)基础设施即服务 基础设施就是物理服务器 云服务厂商把物理服务器搭好,直接卖云端服务器或者虚拟机 用户可以自己装系统,然后装软件等等 PaaS(Platform as …

【错误记录】Invalid character found in method name. HTTP method names must be tokens

错误日志 [2020-08-14 10:47:11.262] [http-nio-8093-exec-7] [INFO] [o.a.c.h.Http11Processor] [Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.] java.lang.IllegalArgumentException: Invali…

redis 常见基础面试题

1、在项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个…

api接口设计

api接口设计 健壮性 对外提供的接口,最好支持幂等性,即相同的请求重复调用,服务端的操作应该只有一次,并且每次返回的结果应该是一样的。 一般的做法是要求客户端在每次调用的时候带上唯一键,服务端第一次正常处理&a…

【转载】广告系统架构解密

广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。 从技术角度来说,广告业务涉及到 AI算法、大数…

【读书笔记】--- 《码出高效:java开发手册》

这几天读了几本书,突然觉得可以写点什么,因为我也看了不少书了,于是就有了个想法,我可以在我看过的每本书后,把我的一些想法记录下来,一方面可以供以后回忆,一方面可以让读者看到后,…

quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist

问题: spring-boot 整合quartz的时候,连接windows的mysql的时候好好的,然而用linux上的mysql的时候,启动就报了这个错: Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist 分析&#xff1a…

quartz 本地有效,线上失效的问题

问题: 最近开了一个新项目,spring boot 整合了quartz,出现了一个问题,就是当项目连接到本地电脑的数据库时,一切正常。但是当项目连接远程linux上的数据库的时候,发现定时任务不灵了,也不是不执…

关于SimpleDateFormat线程不安全的源码分析

SimpleDateFormat,线程不安全,源码分析 1、先看SimpleDateFormat类图 SimpleDateFormat继承了DateFormat DateFormat中有个成员变量是Calendar,这个先记住,线程不安全主要就是因为这个成员变量 2、看下图SimpleDateFormat的p…

mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix

mysql 报错 Specified key was too long; max key length is 767 bytes 当mysql数据库的字符集使用了utf8mb4,就很容易在执行建表sql的时候报这个错误。 原因: mysql有个系统变量innodb_large_prefix, 如果开启了,索引键前缀限…

mysql8.0 线上线下数据库版本不一致导致的问题

问题: 线上注册失败,线下测试环境没问题 update t_authentication_code set invalid 0,update_time sysdate() where email ‘XXX’ and code ‘XXX’ and invalid 1; 同样的sql,线下执行成功,线上却一直没有修改成功 分析…

vue 每次弹框都初始化

之前弹框都是下图这种: 通过detailOpen变量控制是否显示弹框 但这种最近在整合tinymce富文本编辑器的时候,发现第二次弹框数据没有回填 原因是因为第一次弹框关闭后,没有初始化,从而影响了后面的弹框功能。 修改成下图就好了&…

微信小程序支付流程(新手教程)

微信小程序支付流程: 一、前期申请准备工作 1、小程序注册,要以公司的以身份去注册一个小程序,才能开通微信支付权限; 个人申请的小程序是不具备“微信支付”功能的! 但个人小程序可以生成微信支付的那个收款二维码&…

mysql 报错解决思考Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column

mysql报错: [Err] 1055 - Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘库名.表名.字段’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_g…

报表设计调研分享

公司结算系统要做一个内部报表,想自己开发,调研了市面上一圈报表,快把github翻烂了,也没找到一个合适的。 之前给做过一个自定义sql查询的,但最终是因为系统太过复杂,导致最终sql复杂到没法写了&#xff0c…

java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合

java 调用groovy脚本&#xff0c;实现多个sql按指定逻辑运行&#xff0c;可做报表预聚合 1、引入pom <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy</artifactId><version>2.1.6</version></dependenc…