7

当我使用 SpringSource IDE 创建 Spring MVC 模板项目时,我运行应用程序并将根 URL 设置为默认包名称的最后一个单词:

例如,我在创建项目时,将默认包设置为com.sample.myapp. 当我运行应用程序时,它会在http://localhost:8080/myapp. 为什么根 URL 不使用我的项目名称MyProject,而是?

这是一个问题,因为我必须在我的应用程序中指定所有 URL,/myapp/resources/css/mycss.css但是当我导出 .war 并将其部署到 Tomcat 服务器时,Tomcat 需要项目名称(它希望我使用/MyProject/resources/css/mycss.css. 结果,部署时我的所有链接都断开了(但当我在 SpringSource IDE 中本地运行 tomcat 时没有...)

有没有其他人遇到过这个问题?


下面的评论讨论示例:

<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
    <property name="service"
        value="https://localhost:8443/MyProject/j_spring_cas_security_check" />
    <property name="sendRenew" value="false" />
</bean>
4

3 回答 3

12

这取决于您如何运行应用程序。我假设您从 SpringSource IDE (STS) 中选择了“在服务器上运行”?如果您双击 STS 中的服务器定义,您将看到一个“模块”选项卡。从那里,您可以编辑“路径”并将其设置为您想要的任何内容。当您选择“在服务器上运行”时,STS 必须定义一个上下文路径并将其默认为默认包的最后一个元素。如果我没记错的话,默认情况下 Tomcat 使用压缩或分解的 .war 的文件名。在任何一种情况下,您都可以覆盖它。

希望有帮助。

于 2012-12-04T15:24:31.853 回答
3

The first part in the URL after host and port is called the context-path. In your case myapp. In tomcat the context-path is equal to the name of the war-file. If you name the war-file ROOT.war then no context-path is used.

As bimsapi mentioned you can change the context-path in STS, too.

But: You can and should make your app independent of the context-path. If you are using JSP then build links with the <c:url /> tag:

<c:url value="/resources/css/mycss.css" />

This outputs the correct url including the actual context-path. Or your can store it in a variable and use it later:

<c:url value="/items/index" var="cancel-url" />
<a href="${cancel-url}">Cancel</a>

In Java code you can get the context-path with:

request.getContextPath()

where request is the current HttpServletRequest object. Using this makes your app completely independent of the actual context-path which simplifies deployment a lot.

于 2012-12-05T06:18:27.167 回答
0

不确定 STS,但在 pom 文件中设置了 war 文件名:

</dependencies>    
<build>
<finalName>yourProject</finalName>

(刚刚意识到你没有指定maven,哦)

于 2012-12-04T14:57:33.090 回答