You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring GetMapping正则配置问题:需拦截不含e参数的URL

Spring GetMapping 匹配规则问题解决方案

问题根源

你当前的写法错误在于:路径变量numericId的正则仅作用于URL的路径部分(即?前面的内容),而e=L90属于查询参数,不在路径变量的匹配范围内,所以你的正则根本无法检测到查询参数里的e,导致规则完全失效。

正确解决方案

方式一:利用@GetMapping的params属性直接过滤

Spring MVC提供了params属性,可以精准控制请求参数的匹配规则,用!e表示不包含e参数的请求才会匹配该方法。修改后的代码如下:

@RequestMapping("/app")
public class UserController {
    // 仅处理不带e参数的请求
    @GetMapping(value = "/embed/**", params = "!e")
    public String sendEmbedRedirect() {
        // 你的业务逻辑代码
        return "redirect:your-target-url";
    }
}
  • "/embed/**":匹配/embed下的所有层级路径,覆盖你需要的URL结构
  • params = "!e":明确指定只有请求中不存在e参数时,才会触发该方法

方式二:配置前端路由接管带e参数的请求

为了让带e参数的请求直接由前端处理,需要在Spring配置中让这类请求转发到前端入口页面(比如index.html),配置示例如下:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 当请求包含e参数时,转发到前端页面
        registry.addViewController("/embed/**")
                .setViewName("forward:/index.html")
                .setCondition(request -> request.getParameter("e") != null);
    }
}

验证规则

  • 允许的URL(无e参数):会被UserController的sendEmbedRedirect方法处理
  • 禁止的URL(含e参数):会被转发到前端页面,由前端路由接管

内容的提问来源于stack exchange,提问作者user3458271

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:10:30