【发布时间】:2013-02-20 05:54:27
【问题描述】:
我有一个正在开发的 Spring MVC 应用程序,在我尝试部署在临时服务器上之前,情况看起来非常好 - 然后我遇到了这个问题。
事实:
- 当我使用具有以下配置的 Tomcat 7 Maven 插件时,使用
http://localhost:8080一切正常且花花公子。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<warSourceDirectory>${webappDirectory}</warSourceDirectory>
<path>/</path>
<port>${httpPort}</port>
<httpsPort>${httpsPort}</httpsPort>
<keystoreFile>${webappDirectory}/WEB-INF/some.keystore</keystoreFile>
<keystorePass>broadleaf</keystorePass>
<password>broadleaf</password>
</configuration>
</plugin>
但是当我在独立的 Tomcat 上部署相同的代码时,该 Tomcat 使用 ROOT.war 在端口 8080 上提供服务 - 我尝试使用 http://localhost:8080 - 我收到 404 错误。但是当我指向http://localhost:8080/somepage 时,我得到了我需要的东西。
这是一个 Spring MVC 应用程序,它没有在 web.xml 中声明欢迎页面,而是声明了一个 servlet:
<servlet>
<servlet-name>myservelet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext-servlet-cms-contentClient.xml/WEB-INF/applicationContext-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myservelet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我还需要对独立的 Tomcat 做些什么才能让它工作吗?除主页外,所有其他页面均正确提供。我错过了什么?
【问题讨论】:
-
你有定义“/”的RequestMapping的控制器吗?尝试在末尾使用“localhost:8080”,看看你得到了什么。
-
我的原始代码没有,因为我使用的是 CMS。我尝试添加一个有效但它没有显示页面的所有预初始化数据,因为某些部分未正确初始化。我不明白为什么它可以与插件一起使用但不能独立使用?
-
我不熟悉 tomcat-maven-plugin,但我的假设是如果没有明确定义,插件会为“/”的初始映射定义一个主页。
-
它可能由插件声明的
/ 部分定义。
标签: spring model-view-controller maven tomcat