找不到具有URI的HTTP请求的映射…在名称为的DispatcherServlet中

我已经检查了几乎所有相关的文章,但我只是不能解决我的问题。

这是代码:web.xml:

<display-name>Spring3MVC</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.html</url-pattern> <url-pattern>/</url-pattern> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app> 

为spring-servlet.xml:

 <context:component-scan base-package="com.mycompany.elso" /> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> 

myController的:

 public class myController { @RequestMapping("/hello") public ModelAndView helloWorld() { String message = "Hello World, Spring 3.0!"; return new ModelAndView("hello", "message", message); } } 

网页/ index.jsp:

 <html> <head> <title>Spring 3.0 MVC Series</title> </head> <body> <a href="hello.html">Say Hello</a> </body> </html> 

网页/ WEB-INF / jsp / hello.jsp:

 <html> <head> <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title> </head> <body> ${message} </body> </html> 

所以,当我启动应用程序的index.jsp加载正确,但是当我点击href导航到hello.jsp我有一个404错误,服务器日志说:

 No mapping found for HTTP request with URI [/Elso/hello.html] in DispatcherServlet with name 'spring' 

我已经查过几十篇这样的文章,但是我找不到这个错误,有人有什么想法呢?

您可以尝试在myController类的顶部添加一个@Controller注释,然后尝试以下url /<webappname>/my/hello.html 。 这是因为org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping在myController类中的每个RequestMapping前面加上/ my

  <mvc:default-servlet-handler/> 

到spring-servlet.xml

如果你正在使用

 <mvc:annotation-driven/> 

确保你的spring-servlet.xml正确

 <context:component-scan base-package="com.....controller" /> tag. 

基本上你需要在你的java代码中包含你已经使用注解的所有包。

我解决了我的问题:Java Build Path – > JRE system library – > Edit – > Alternate JRE – > – > Finish

因为它被configuration到JDK文件夹,所以它给予exception

请检查您的[PROJECT_NAME]\target\classes目录以查看是否生成myController.class

如果没有,请检查你所有的java源代码是否有编译错误。

尝试:

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

为我工作!

确保

 <mvc:annotation-driven/> <context:component-scan base-package="com.hireartists.web.controllers"/> 

指向包含控制器的正确的包。

如果您正在使用基于Spring MVCconfiguration的Java代码,请启用WebMvcConfigurerAdapter对象中的DefaultServletHandlerConfigurer

 @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } 

检查你的Bean xmlns ..

我也有类似的问题,但我解决了它通过添加mvc xmlns。

 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <context:component-scan base-package="net.viralpatel.spring3.controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans> 

另外<mvc:annotation-driven/>为我工作。 在行<context:component-scan ............/>之前添加它

删除Tomcat服务器并在Eclipse中添加新的tomcatconfiguration解决了我的问题。

如果您使用maven作为项目的构build工具,请正确构build您的项目,编译和xml文件中的更改不会反映在编译后。

如果您依赖于Spring Social ,请检查您是否configuration了Web Controller bean:

 import org.springframework.context.annotation.Bean; import org.springframework.social.connect.web.ConnectController; import org.springframework.social.connect.ConnectionFactoryLocator; import org.springframework.social.connect.ConnectionRepository; ... @Bean public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) { return new ConnectController(connectionFactoryLocator, connectionRepository); } 

如果您想要提供.html文件,则必须在您的springconfiguration文件中添加<mvc:default-servlet-handler /> 。 .html文件是静态的。 希望这可以帮助别人。

如果您使用的是maven,那么在运行您的web服务器之前,先运行maven install命令,因为它会为您的控制器生成一个类文件,而我的经验是您的应用程序缺失的。

没有find控制器,这是基本的问题。 这可能是由于以下原因。

A.在WEB-INF文件夹内有文件web.xml,它指的是dispatcherServlet。 在这里它是mvc-config.xml

 <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 

B.这个mvc-config.xml文件有命名空间,它必须扫描控制器。

 <context:component-scan base-package="org.vimal.spring.controllers" /> <mvc:annotation-driven /> 

C.检查你拥有控制器的包名称的正确性。 它应该工作。

 All Controllers must be Annotated with @Controller. 

@Controller添加到您的控制器,或者您为json终结点添加了@RequestMapping

这在我部署一个类似的应用程序时工作。

如果您正在使用Maven,请将这些添加到您的pom.xml中

 <dependency> <groupid>javax.servlet</groupid> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> 
 <dependency> <groupid>taglibs</groupid> <artifactId>standard</artifactId> <version>1.1.2</version> <scope>runtime</scope> 

有完全相同的错误,并花了很长时间试图了解它。 这很可能是编译错误,Java类不会在您的servlet中发布。 请检查您使用\ tmp1 \ wtpwebapps [PROJECT_NAME] \ WEB-INF \ classes \的服务器,并尝试find您控制器类以查看它们是否已发布。 如果没有,你需要深入到任何编译错误的底部。

我也面临同样的问题,但下面的命名空间后,它工作正常:

 xmlns:mvc="http://www.springframework.org/schema/mvc" 

在pom.xml中,确保包装被设置为像<packaging>war</packaging>这样的<packaging>war</packaging> ,而不是jar或其他任何东西。

我有同样的问题,经过大量的研究后,我发现类没有得到发布在我的目标文件夹。 所以我从cmd运行了下面两个命令

  1. mvn干净安装
  2. mvn包

令人惊讶的是,我能够访问该页面,错误消失了。 同样可以从目标文件夹中进行validation,您将能够find之前缺less的合格类。

什么是/ Elso?

你试试:

 @RequestMapping("/Elso") public class myController { @RequestMapping("/hello") public ModelAndView helloWorld() { String message = "Hello World, Spring 3.0!"; return new ModelAndView("hello", "message", message); } }