未find具有URI的HTTP请求的映射

我的处理程序转发到internalresourceview“apiForm”,但是,然后我得到错误404 RequestURI = / WEB-INF /页/ apiForm.jsp。 我确定apiForm.jsp位于/ WEB-INF / pages /

13:45:02,034 DEBUG [org.springframework.web.servlet.view.JstlView] – 在InternalResourceView'apiForm'中转发资源[/WEB-INF/pages/apiForm.jsp]
13:45:02,035 DEBUG [org.springframework.web.servlet.DispatcherServlet] – 名为“testapp2”的DispatcherServlet确定[/WEB-INF/pages/apiForm.jsp]的Last-Modified值
13:45:02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] – 在getLastModified中找不到处理程序
13:45:02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] – 名为“testapp2”的DispatcherServlet处理[/WEB-INF/pages/apiForm.jsp]
13:45:02,038 WARN [org.springframework.web.servlet.PageNotFound] – 在名为“testapp2”的DispatcherServlet中找不到具有URI的HTTP请求的映射[/WEB-INF/pages/apiForm.jsp]
13:45:02,045 DEBUG [org.springframework.web.servlet.DispatcherServlet] – 成功完成请求
13:45:02,048 DEBUG [org.springframework.web.servlet.DispatcherServlet] – 成功完成请求

这是我的dispatcher.xml看起来像..

<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/pages/"/> <property name="suffix" value=".jsp"/> </bean> 

看起来像DispatcherServlet正在尝试处理对apiForm.jsp的请求,这向我build议您的web.xml servlet映射正在将该空间的请求引导到DispatcherServlet。

你可能有这样的事情?

 <servlet-mapping> <servlet>dispatcher</servlet> <url-pattern>/*</url-pattern> </servlet-mapping> 

尝试使用不同的扩展名(例如,.do)来调用您的控制器,并更新servlet映射以适应

  <servlet-mapping> <servlet>dispatcher</servlet> <url-pattern>*.do</url-pattern> </servlet-mapping> 

是的,我知道我迟到了,但可能会帮助别人。

servlet容器根据匹配的最长pathselect映射。 所以你可以把这个映射放到你的JSP中,它将通过/ *映射来select。

 <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>/WEB-INF/pages/*</url-pattern> </servlet-mapping> 

实际上,对于Tomcat来说,这是您所需要的,因为jsp是一个开箱即用的servlet。 对于其他容器,您需要findJSP servlet的名称或添加一个servlet定义,如:

 <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> </servlet> 

只需将<mvc:default-servlet-handler />到您的DispatcherServletconfiguration中即可完成!

你会得到一个No mapping found for HTTP request with URI错误的No mapping found for HTTP request with URI

如果你扫描了错误的包裹

例如你的控制器在my.package.abc中,但是你错误地放了

<context:component-scan base-package="my.package.efg*" />

要么

@ComponentScan("my.package.efg*")

从这个意义上说,你的控制器不会被扫描到Web应用程序的上下文中,当请求进来不只是URL,但整个类没有被发现!

随着Spring 3.1和Tomcat 7,我得到了下一个错误:

org.springframework.web.servlet.DispatcherServlet noHandlerFound在名为“appServlet”的DispatcherServlet中找不到具有URI的HTTP请求的映射[/ baremvc /]

我需要添加到web.xml的下一个configuration:

 <welcome-file-list> <welcome-file/> </welcome-file-list> 

和应用程序工作!

帮助我的解决scheme是:不要将DispatcherServlet映射到/* ,将其映射到/ 。 最后的configuration是:

 <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> ... </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 

可以做简单的检查。 我目前使用Spring MVC架构与hibernate。 我错过了在类名上面写@Controller注释。 这对我造成了问题。

 @Controller public class MyClass{ ... } 

希望这个简单的检查解决您的问题。

我想我读了整个互联网,弄清楚如何得到sitemesh处理我的HTMLpath没有扩展+ APIpath没有扩展名。 我被包裹在一件直筒外套中,每一个回合似乎都破坏了别的东西。 然后我终于遇到了这个post。

 <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>/WEB-INF/views/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>/WEB-INF/decorators/*</url-pattern> </servlet-mapping> 

在你的dispatcher-servlet.xml中input

 <mvc:default-servlet-handler/> 

我有同样的问题,当然有一点区别。 故事是,当我删除下面的行:

 <mvc:resources mapping="/resources/**" location="classpath:/resources/" /> 

一切都很好,但在这一行的存在,同样的错误提高。

经过一些试验和错误,我发现我必须将下面的行添加到我的spring应用程序上下文文件中:

 <mvc:annotation-driven /> 

希望能帮助到你!

这也可能发生,当你的应用程序不实际编译,但它仍然在Tomcat中启动。 当我看到发生这种情况的时候,它并没有编译,因为项目有一个“特定项目”的JDK,并且代码在没有特定JDK的计算机上检出。 Eclipse默认为JRE,而不是JDK,然后该应用程序未被编译。

为了解决这个问题,我们在这里closures了“Project Specific Settings”:

“项目|属性| Java编译器”

以下是有关如何执行此操作的详细信息: https : //stackoverflow.com/a/2540730/26510

与Brad Parks一样的答案…更多的文字

我有完全相同的问题,并与其他许多人一起尝试了上述解决scheme,都带有负面结果。 我甚至开始了一个新的,新的开发环境,并简单地安装了一个弹簧mvc模板,并试图在安装后直接运行(应该工作,但失败了)

对我来说,问题是我在项目中使用jdk1.6,但是我在eclipse中select的执行环境是jdk1.7。 解决方法是更改项目特定的执行环境设置,以便将此项目设置为jdk1.6。 右键点击project – > Properties – > Java Compiler – >勾选“Enable project specific settings”(如果没有选中) – >select合适的jdk(或者如果没有安装,则添加)。

我希望这可以帮助别人 ,节省那些时间,因为在过去的几天里,我一直在互联网的每一个angular落寻找答案。 当我开始绝望的时候,我无意中偶然发现了这个问题,并且在根据我的大脑不太可能find的地方寻找解决scheme。 =)

我的2美分。 谢谢!

编辑1:使用项目特定的设置

编辑2:刚刚意识到布拉德帕克斯已经在这个线程中回答了这个问题。 那么,至less我得到了“编辑” – 退出这个= D

不幸的是,这是一个相当广泛的类错误消息。 还有一件事情可能会出错,如果你错过了一些class级/jar子。 例如,如果缺lessspring-expression jar文件,则无论您尝试多么困难,以及如何正确configuration其他所有内容, dispatch-servlet都无法find您的控制器。

你需要的是有一个控制器,首先响应的url,然后呈现您的jsp。 看到这个链接的解决scheme 。

“/ openStudentPage”是我想要打开的页面,我做了:

  @RequestMapping(value = "/", method = RequestMethod.GET) public String index(Model model) { return "redirect:/openStudentPage"; } @RequestMapping(value = "/openStudentPage", method = RequestMethod.GET) public String listStudents(Model model) { model.addAttribute("student", new Student()); model.addAttribute("listStudents", this.StudentService.listStudents()); return "index"; } 

我在Eclipse Luna EE中遇到过这个问题。 我的解决scheme只是重新启动Eclipse,它开始正常加载servlet。

将您的servlet名称调度程序更改为任何其他名称。因为调度程序是spring3,spring4版本的预定义名称。

 <servlet> <servlet-name>ahok</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ashok</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>