Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringSource IDE不使用项目名称作为SpringMVC应用程序的根URL_Spring_Spring Mvc_Sts Springsourcetoolsuite - Fatal编程技术网

SpringSource IDE不使用项目名称作为SpringMVC应用程序的根URL

SpringSource IDE不使用项目名称作为SpringMVC应用程序的根URL,spring,spring-mvc,sts-springsourcetoolsuite,Spring,Spring Mvc,Sts Springsourcetoolsuite,使用SpringSource IDE创建Spring MVC模板项目时,我运行应用程序,根URL设置为默认包名的最后一个字: 例如,当我创建项目时,我将默认包设置为com.sample.myapp。当我运行应用程序时,它会在http://localhost:8080/myapp。为什么根URL不使用我的项目名,MyProject 这是一个问题,因为我必须将应用程序中的所有URL指定为/myapp/resources/css/mycss.css,但当我导出.war并将其部署到Tomcat服务器时,

使用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>

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

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

你的项目

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

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


希望对您有所帮助。

URL中主机和端口之后的第一部分称为上下文路径。在您的示例中,tomcat中的myapp.in上下文路径等于war文件的名称。如果您将war文件命名为ROOT.war,则不使用上下文路径

正如bimsapi提到的,您也可以在STS中更改上下文路径

但是:您可以而且应该使您的应用程序独立于上下文路径。如果您使用JSP,则使用
标记构建链接:

<c:url value="/resources/css/mycss.css" />
其中request是当前的
HttpServletRequest
对象。
使用它可以使你的应用程序完全独立于实际的上下文路径,这大大简化了部署。

你的假设是正确的,这正是我想要的。非常感谢!非常感谢。在花了这么多时间、更改servlet上下文、pom细节和清理/构建项目之后,我仍然找不到它。甚至在我开始问一个新问题之前,我都没有找到任何东西。这是非常有用的,谢谢。我开始寻找一种方法,不必将应用程序名称硬编码到我的URL中,这似乎会奏效!谢谢!Florian,还有一个问题。我的应用程序中也有一些URLtext-security.xml,其中我在上下文路径中硬编码。你知道使bean定义中的URL相对的推荐方法吗?它是什么类型的URL?如果它是用于spring安全的,那么只需提供不带上下文路径的相对URL,如下所示:Florian,请参阅我修订的帖子以获取URL类型的示例。抱歉,我不知道现在,但有一个相关的问题:
<c:url value="/items/index" var="cancel-url" />
<a href="${cancel-url}">Cancel</a>
request.getContextPath()