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

问题描述 投票:0回答:3

我对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)为什么URL不是

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

?

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

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

java eclipse spring spring-mvc sts-springsourcetoolsuite
3个回答
1
投票

Eclipse> Properties> Web Project Settings:设置为Context Root my-spring-project然后在eclipse中正常运行项目。它应该从http://localhost:8080/my-spring-project/开始。同样做展示项目的映射:<mvc:view-controller path="/" view-name="home"/>


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>


0
投票

我想您忘记在服务器上部署新项目了。

  • 1)打开“服务器”视图(Ctrl + 3,键入“服务器”)
  • 2)右键单击您的Server实例(例如“tomcat 7 at localhost”)
  • 3)选择“添加和删除...”
  • 4)从“可用”和“添加>”中选择“my-spring-project”
  • 5)启动服务器并访问“localhost:8080 / my-spring-project /”
© www.soinside.com 2019 - 2024. All rights reserved.