![](/img/trans.png)
[英]org.springframework.web.servlet.DispatcherServlet noHandlerFound WARNING: No mapping found for HTTP request with URI in DispatcherServlet with name
[英]Getting this org.springframework.web.servlet.DispatcherServlet noHandlerFound error and WARNING: No mapping found for HTTP request URI in Spring MVC
<html>
<body>
<form action="add">
<input type="text" name="t1"><br>
<input type="text" name="t2"><br>
<input type="submit" />
</form>
</body>
</html>
网页.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>telusko</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>telusko</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
telusko-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:ctx="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
<!-- <mvc:default-servlet-handler/> -->
<mvc:annotation-driven/>
<ctx:annotation-config></ctx:annotation-config>
<ctx:component-scan base-package="resources.com.telusko"></ctx:component-scan>
</beans>
添加控制器.java
package com.telusko;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AddController {
@RequestMapping("/add")
public void add() {
System.out.println("i am here");
}
}
我有一个 index.jsp 文件,我在其中声明 action=/add。 现在在 web.xml 中声明一个调度程序,其中给定的 servlet 名称登录。 之后制作一个 telusko-servlet.xml,其中定义 base-package:
<ctx:component-scan base-package="com.telusko"></ctx:component-scan>
之后创建一个logincontroller类并在类上面使用注解@Controller
和logincontroller类上面的@RequestMapping("/add)
方法。然后运行index.jsp文件仍然给我错误为什么noHandlerFound
错误发生在login-servlet .xml. 我给了基础包名称 com.telusko,其中 AddController.java 文件在那里。
我应该在控制台上收到“我在这里”消息但没有收到它而不是收到警告:没有找到 HTTP 请求的映射
Sep 26, 2018 10:47:36 PM org.springframework.web.servlet.DispatcherServlet
initServletBean
INFO: FrameworkServlet 'telusko': initialization started
Sep 26, 2018 10:47:36 PM
org.springframework.web.context.support.XmlWebApplicationContext
prepareRefresh
INFO: Refreshing WebApplicationContext for namespace 'telusko-servlet':
startup date [Wed Sep 26 22:47:36 IST 2018]; root of context hierarchy
Sep 26, 2018 10:47:36 PM
org.springframework.beans.factory.xml.XmlBeanDefinitionReader
loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-
INF/telusko-servlet.xml]
Sep 26, 2018 10:47:38 PM org.springframework.web.servlet.DispatcherServlet
initServletBean
INFO: FrameworkServlet 'telusko': initialization completed in 2096 ms
Sep 26, 2018 10:47:38 PM org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Servlet.service() for servlet [telusko] in context with path
[/DemoMVC] threw exception [Servlet execution threw an exception] with root
cause
java.lang.NoSuchMethodError:
org.springframework.http.HttpMethod.resolve(Ljava/lang/String;)
Lorg/springframe
ork/http/HttpMethod;
at
org.springframework.web.servlet.FrameworkServlet.service
(FrameworkServlet.java:8
41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:231)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:166 at
org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:199)at
org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:96)at
org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.jav
a:490)
at
org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:139)
at
org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:92)
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke
(AbstractAccessLogValve.
java:668)
at
org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:74)
at
org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:343)
at
org.apache.coyote.http11.Http11Processor.service
(Http11Processor.java:408)at
org.apache.coyote.AbstractProcessorLight.process
(AbstractProcessorLight.java:66)at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process
(AbstractProtocol.ja
va:770)at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun
(NioEndpoint.java:1415)at
org.apache.tomcat.util.net.SocketProcessorBase.run
(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run
(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
我遇到了同样的问题,项目文件夹结构的以下更改解决了我的问题。
更改文件夹结构如下,如果没有可用的java文件夹,则创建它。 您的 AddController.java 应该存在于 /src/main/java 下。 在此更改后,您可以在日志中看到 SOP。
/src/main/resources 到 /src/main/java
在项目结构中,创建控制器的 com.telusko 包应该位于 Java Resources/src/main/java 文件夹下,该文件夹缺失,可以通过查看项目属性并单击 Java Build Path 来创建。 在那里,请选择源选项卡并删除丢失的文件夹。 并再次创建或添加具有相同文件夹路径和名称的文件夹。 这将在项目结构中创建一个文件夹作为 src/main/java。 在此路径中,应移动或创建带有控制器的 com.telusko 包。 再次清理并运行服务器。 它现在会起作用。
在您的配置中添加 viewResolver bean,我想您在“WEB-INF/jsp”中的视图
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
编辑 :
<ctx:component-scan base-package="resources.com.telusko"></ctx:component-
scan>
到
<ctx:component-scan base-package="com.telusko"></ctx:component-
scan>
更改您的请求方法
@RequestMapping("/add")
public String add()
{
System.out.println("i am here");
return "index"; //return your view to render
}
希望它起作用。
@Component
@RequestMapping(path="/add")
public class AddController {
@RequestMapping(method=RequestMethod.GET)
public void add() {
System.out.println("I'm here");
}
}
当我错过了处理程序方法的正斜杠(/)时,我在我的代码中遇到了同样的问题:
@RequestMapping(path="processform", method=RequestMethod.POST)
public String handleForm(@RequestParam("userName") String userName,
@RequestParam("email") String userEmail,
@RequestParam("password") String userPassword, Model model)
{
System.out.println("user Name: "+ userName);
System.out.println("user email: "+ userEmail);
System.out.println("user Password: "+ userPassword);
model.addAttribute("name", userName);
model.addAttribute("email", userEmail );
model.addAttribute("password", userPassword);
return"success";
}
解决方案:在处理程序方法上正确添加正斜杠(/)并在servlet配置文件中正确添加视图解析器。
@RequestMapping(path="/processform", method=RequestMethod.POST)
查看解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" name="viewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"></property>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.