未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>