使用STS模板项目创建新的Spring MVC项目时出现奇怪的行为,URL不正确我必须重建项目

时间:2012-12-03 11:50:27

标签: java eclipse spring spring-mvc sts-springsourcetoolsuite

我对Spring MVC项目的正确创建存有疑问。

当我运行导入的项目(例如可从STS仪表板下载的Spring MVC Showcase示例)时,在浏览器URL栏中,该项目的URL如下:

http://localhost:8080/project-name/ 

(例如,Web MVC Showcase示例具有项目名称:“spring-mvc-showcase”并具有以下URL:

http://localhost:8080/spring-mvc-showcase/ )

现在,我怀疑是否在STS \ Eclipse中使用Spring Template创建了一个新的Spring MVC项目。

我在STS中执行以下操作:

文件 - >新 - >项目,在我看来是一个向导,我可以选择项目类型。

所以我选择了 Spring Template Project ,现在在我看到其他向导窗口,我可以选择Spring Project的特定类型,我选择“Spring MVC Project”

好的,现在在我看来我需要设置其他向导窗口:

项目名称,我插入: my-spring-project

顶级软件包,我已插入: org.mycompany.foo

好的,现在我在服务器上运行我的项目,这不会运行并且在浏览器的URL栏中我没有

http://localhost:8080/my-spring-project/ (as I would expect) 

但我有:

http://localhost:8080/foo/

在堆栈跟踪中,我有以下错误消息:

  

警告:org.springframework.web.servlet.PageNotFound - 在名为'appServlet'的DispatcherServlet中找不到带有URI [/ foo /]的HTTP请求的映射

然后,如果我清理项目,STS重建项目,如果我再次尝试运行它,项目运行良好,URL地址仍然存在:

http://localhost:8080/foo/

我认为这是一种奇怪的行为,我没有想法是什么原因......

所以:

1)为什么网址不是

http://localhost:8080/my-spring-project/ 

2)为什么我必须清理并重建我的项目才能运行它?

3)我在创建标准Spring MVC项目时遇到了一些错误?

3 个答案:

答案 0 :(得分:1)

Eclipse>属性> Web项目设置:设置为上下文根my-spring-project 然后在eclipse中正常运行项目。它应该以{{1​​}}开头。也可以像展示项目一样进行映射:http://localhost:8080/my-spring-project/

答案 1 :(得分:0)

这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">

<!-- 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/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

答案 2 :(得分:0)

我认为您忘记在服务器上部署新项目。

  • 1)打开“服务器”视图(Ctrl + 3,键入“服务器”)
  • 2)右键单击您的Server实例(例如“tomcat 7 at localhost”)
  • 3)选择“添加和删除...”
  • 4)从“可用”和“添加&gt;”中选择“my-spring-project”它们
  • 5)启动服务器并访问“localhost:8080 / my-spring-project /”