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

Spring Boot 2:根路径重定向至指定上下文路径方案咨询

最优解决方案:无需新建Servlet,Spring Boot自带优雅处理方式

嘿,你完全不用特意创建新的Servlet来处理根路径的重定向,Spring Boot提供了几种更贴合框架生态的方案,根据你的需求选就行:

方案1:一行配置搞定(最简单)

如果你的Spring Boot版本是2.6及以上,直接在application.properties(或application.yml)里加一行配置:

server.servlet.redirect-to-context-path=true

这个配置会自动把访问根路径/的请求重定向到你设置的上下文路径/blah,完全零代码,最省心。

方案2:用WebMvcConfigurer配置视图控制器

如果版本低于2.6,或者你需要更灵活的控制,可以创建一个配置类,通过WebMvcConfigurer来添加重定向规则:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 把根路径请求重定向到/blah
        registry.addRedirectViewController("/", "/blah");
        // 如果还有其他需要重定向的路径,也可以在这里添加
        // registry.addRedirectViewController("/home", "/blah");
    }
}

这种方式属于Spring MVC的标准配置,不会侵入业务代码,非常干净。

方案3:自定义Controller处理(适合需要额外逻辑的场景)

如果你的场景需要在重定向前做一些额外操作(比如记录访问日志、判断用户权限等),可以写一个简单的Controller来处理根路径:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class RootRedirectController {
    private static final Logger log = LoggerFactory.getLogger(RootRedirectController.class);

    @GetMapping("/")
    public String redirectToContextPath() {
        // 这里可以加自定义逻辑,比如日志
        log.info("用户访问根路径,将重定向到/blah");
        return "redirect:/blah";
    }
}

这种方式灵活性最高,能满足各种定制化需求。

为什么不推荐新建Servlet?

Spring Boot本身是基于Spring MVC构建的,新建Servlet会绕过Spring的上下文管理,不仅增加了不必要的复杂度,还可能导致一些拦截器、过滤器无法生效,所以上面的几种方案都比新建Servlet更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:10:23