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

如何设置Spring根上下文路径

毛胜
2023-03-14

我是一个Spring新手,正在制作一个Spring Web应用程序(不是Spring-boot,这有多大区别?)。部署在Tomcat7服务器上。

应用程序已启动并运行。我的问题是只能通过标准URL访问:

http://mycompany.com:8081/cwing-0.0.3-snapshot/index.html

以下操作不起作用:http://mycompany.com:8081/cwing-0.0.3-snapshothttp://mycompany.com:8081/cwing-0.0.3-snapshot/

即使我的web.xml将index.html列为欢迎页面。

这个问题的另一个症状是,应用程序中的各种链接都需要指定为相对的,而不是前置的“/”。

但即使是这些URL也不是我真正想要的。

我宁愿具体说明

http://mycompany.com:8081/cwing

并让它调出index.html

遵循向Spring Boot应用程序添加上下文路径的指导

我在src/main/resources中创建了一个application.xml文件,其内容如下:

server.contextPath=/cwing
server.port=8081

这不起作用。http://mycompany.com:8081/cwing会在服务器上出现一个带有404错误的空白页,http://mycompany.com:8081/cwing/index.html也是如此。

我一定是漏掉了什么。还需要什么才能让它像我想要的那样工作?

    <?xml version="1.0"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
              version="3.0">
      <display-name>cwing</display-name>

        <!-- Creates the Spring Container shared by all Servlets and Filters -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!-- The definition of the Root Spring Container shared by all Servlets 
            and Filters -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
            /WEB-INF/spring/context.xml
            /WEB-INF/spring/datasource.xml
            /WEB-INF/spring/security.xml
            </param-value>
        </context-param>

        <servlet>
            <servlet-name>d</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                    /WEB-INF/spring/context.xml
                    /WEB-INF/spring/datasource.xml
                    /WEB-INF/spring/security.xml
                </param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>

        <servlet-mapping>
            <servlet-name>d</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

        <!-- Disables Servlet Container welcome file handling. Needed for compatibility 
            with Servlet 3.0 and Tomcat 7.0 -->
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
        </welcome-file-list>

        <filter>
            <filter-name>springSecurityFilterChain</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping> 
...
</web-app>

共有1个答案

安经纶
2023-03-14

这与Spring MVC无关,而是与特定的服务器相关,默认情况下,Tomcat将您的WAR名称作为上下文根。如果您想要改变这一点,您可以一直重命名您的WAR文件,或者我建议更改您的pom.xml以构建具有最终名称的WAR文件,下面是如何做到这一点的:

<build>
  <finalName>finalName</finalName>
 . . .
</build>
 类似资料:
  • 我将application.properties中的contextPath设置为server.contextPath=/mywebapp,在带有spring security的spring boot application中,默认url设置为/login it,而不是将上下文路径设置为/mywebapp,并将我重定向为/login而不是/mywebapp/login。如何用spring secur

  • 我正在尝试设置我的spring boot应用程序的上下文根。我将我的应用程序作为war文件部署到Jboss。当我将根URL部署到JBoss/wildly时,我试图设置它的上下文路径,但是它似乎被忽略了。除非我添加一个设置contex-root变量的jboss-web.xml文件,否则我的部署url总是基于war文件名: 例如:myapp.war总是部署为:localhost:8080/myapp,

  • 我必须在tomcat 7中部署我的app.war文件。的。war文件名后面是它的版本号。这里我需要设置一个上下文路径,这样实际的url将只包含应用程序名(没有版本号)。 我的要求是,服务器中不应该有编辑.xml。 这是我的背景。xml如下所示。 context.xml放在war at /META-INF文件夹中。谁能告诉我我错在哪里?

  • 我使用Spring Boot 2.1.2. RELEASE编写联调,无法设置所需的上下文路径。它总是等于空字符串(用servletContext.getContextPath()获得)。 application-test.properties: 测试配置: 呼叫代码: 应用测试中的其他属性。按预期注入属性。上下文路径通常在我运行服务器时设置。我试图以@SpringBootTest的形式启动这个测试

  • 我的源代码位于如下文件夹结构中: MyGitroot/MyProj/Module1/SRC/Main/Groovy/COM/MyPak/Module1 MyGitroot/MyProj/Module2/SRC/Main/Groovy/COM/MyPak/Module2 MyGitroot/MyProj/Module3/SRC/Main/Groovy/COM/MyPak/Module3 Gradle