当前位置: 首页 > 知识库问答 >
问题:

自动重定向根路径到Spring Boot上下文路径

邢曦
2023-03-14

我正在使用application.properties文件中指定的Spring Boot上下文路径,它工作得很好

server.port=5000
server.context-path=/services

Spring Boot 2.0及以上版本

server.port=5000
server.servlet.context-path=/services

共有1个答案

马业
2023-03-14

我想我可以提供一个解决方案。请参考下面的代码。

@Configuration
public class RootServletConfig {

    @Bean
    public TomcatServletWebServerFactory servletWebServerFactory() {
        return new TomcatServletWebServerFactory() {

            @Override
            protected void prepareContext(Host host, ServletContextInitializer[] initializers) {
                super.prepareContext(host, initializers);
                StandardContext child = new StandardContext();
                child.addLifecycleListener(new Tomcat.FixContextListener());
                child.setPath("");
                ServletContainerInitializer initializer = getServletContextInitializer(getContextPath());
                child.addServletContainerInitializer(initializer, Collections.emptySet());
                child.setCrossContext(true);
                host.addChild(child);
            }
        };
    }

    private ServletContainerInitializer getServletContextInitializer(String contextPath) {
        return (c, context) -> {
            Servlet servlet = new HttpServlet() {
                @Override
                protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                    resp.sendRedirect(contextPath);
                }
            };
            context.addServlet("root", servlet).addMapping("/*");
        };
    }
}
 类似资料:
  • 我有一个Spring Boot应用程序,其中的上下文路径如下: context-path=/data 我如何才能确保重定向工作的域名以及?

  • 我通过将上下文路径设置为/myservice来运行我的springboot应用程序。这将导致附加在URL处公开的所有执行器endpoint-http://localhost:8080/myservice/actuator/,而我只想要http://localhost:8080/actuator/.有没有办法告诉springboot忽略将上下文路径附加到执行器endpoint(通过Dispatche

  • 我正在运行一个带有嵌入式Tomcat的Spring Boot1.2.3应用程序。 示例: 但是Spring@Controller@RequestMapping和Spring Security的似乎并不尊重它。两者仍然可以像一样工作。

  • 我是一个Spring新手,正在制作一个Spring Web应用程序(不是Spring-boot,这有多大区别?)。部署在Tomcat7服务器上。 应用程序已启动并运行。我的问题是只能通过标准URL访问: http://mycompany.com:8081/cwing-0.0.3-snapshot/index.html 以下操作不起作用:http://mycompany.com:8081/cwing

  • 在Spring-Boot应用程序中,可以使用中的属性来选择上下文路径,但是由于我使用的是外部Tomcat8,因此没有使用该属性。 因此,我查看了tomcat-8文档,其中指出: 如果要使用与基文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一来防止双重部署: null null

  • 问题内容: 我正在尝试重定向我的响应,但是我被困在链接路径上。 以下命令将我带到tomcat的localhost并在此处搜索页面,但是按预期找不到任何内容。 为了解决此问题,我必须将我的根文件夹名称(来自webaps的名称)放在链接路径中,但是我认为这不是一个好主意。 为什么会这样呢?除了getRequestURL()或类似的方法,还有其他解决方法吗? 问题答案: 相对重定向URL相对于当前请求U