我对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项目时遇到了一些错误?
答案 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)
我认为您忘记在服务器上部署新项目。