0

我对正确创建 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 - 在 DispatcherServlet 中找不到带有 URI [/foo/] 的 HTTP 请求的映射,名称为“appServlet”

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

http://localhost:8080/foo/

我认为这是一种奇怪的行为,我不知道这是什么原因......

所以:

1)为什么网址不是

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

?

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

3) 我在创建标准 Spring MVC 项目时出错了?

4

3 回答 3

1

Eclipse > Properties > Web Project Settings : Set as Context Root my-spring-project 然后像在 Eclipse 中正常运行一样运行项目。它应该以http://localhost:8080/my-spring-project/. 也像展示项目一样进行映射:<mvc:view-controller path="/" view-name="home"/>

于 2013-09-20T20:52:14.340 回答
0

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

  • 1) 打开“服务器”视图(Ctrl+3,输入“服务器”)
  • 2)右键单击您的服务器实例(例如“本地主机上的tomcat 7”)
  • 3) 选择“添加和删除...”
  • 4)从“可用”中选择“my-spring-project”并“添加>”它们
  • 5)启动服务器并访问“localhost:8080/my-spring-project/”
于 2012-12-03T12:49:16.570 回答
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>

于 2012-12-03T12:42:36.670 回答