x1c 0d1x索引.jsp
<html>
<body>
<form action="add">
<input type="text" name="t1"><br>
<input type="text" name="t2"><br>
<input type="submit" />
</form>
</body>
</html>
Web.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>
电信服务小服务程序.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,在其中定义基础包:
<ctx:component-scan base-package="com.telusko"></ctx:component-scan>
然后创建一个logincontroller类,并在类的上面使用注解@Controller
,在logincontroller类的方法上面使用注解@RequestMapping("/add)
。然后运行index.jsp文件,仍然会出现错误,为什么会出现noHandlerFound
错误,如login-servlet.xml。我已经在www.example.com文件所在的位置指定了基础包名称com.teluskoAddController.java。
我应该在控制台上得到**“我在这里”消息,但没有得到它,而不是得到警告:找不到HTTP请求的Map**
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)
9条答案
按热度按时间vmdwslir1#
ua4mk5z42#
我也遇到过同样的问题,下面项目文件夹结构的变化解决了我的问题。
按如下所示更改文件夹结构,如果没有可用的java文件夹,请创建它。您的AddController.java应位于/src/main/java下。更改后,您可以在日志中看到SOP。
/src/main/资源到/src/main/java
p4rjhz4m3#
在项目结构中,创建控制器的com.telusko包应该位于Java Resources/src/main/java文件夹下,该文件夹缺失,可以通过浏览项目属性并单击Java构建路径来创建该文件夹。请选择“源”选项卡并移除缺少的文件夹。然后再次创建或添加具有相同文件夹路径和名称的文件夹。这将在项目结构中创建一个文件夹src/main/java。在这个路径中,应该移动或创建带有控制器的com.telusko包。然后再次清理并运行服务器。现在可以工作了。
mznpcxlj4#
在项目中创建一个新文件夹***/src/main/java***,并在其中添加addcontroller.java文件。
t30tvxxf5#
在您的配置中添加viewResolver bean,我假设您的视图在“WEB-INF/jsp”中
编辑:
至
更改请求方法
希望能成功。
rqcrx0a66#
当你创建maven项目的时候,默认情况下它不会在'javaResource/src/main'下创建'java'文件夹,这是获取控制器路径所必需的。
确保首先在'javaResource/src/main'中创建java文件夹,然后创建包和控制器。
随附屏幕截图供参考。
qq24tv8q7#
我也遇到了同样的问题,没有一个StackOverflow的答案是有效的。在web.xml中做了一些修改后,它解决了我的问题。我只是在web.xml中添加了我的dispatcher-servlet.xml的路径。
kx1ctssn8#
当我在处理程序方法中缺少正斜杠(/)时,我在代码中也遇到了同样的问题:
解决方案:在处理程序方法上正确添加正斜杠(/),并在Servlet配置文件中正确添加视图解析器。
视图解析器
mtb9vblg9#
亲爱的朋友们,在谷歌搜索了这么多小时后,我终于得到了错误404的答案:
错误:源服务器未找到目标资源的当前表示形式,或者不愿意公开存在该表示形式。
如果您在STS中工作,则会显示STS dispatcherServlet noHandler found错误......因此,要清除此步骤,请先执行此步骤:右键单击项目〉构建路径〉配置构建路径〉部署程序集〉添加(右侧)〉文件夹〉添加视图文件夹〉应用并关闭
然后,在您完成第一步之后,将显示您的索引页,但您的控制器url显示错误.....显示此过程中您必须构建的项目是sts,因为在eclipse中,项目将自动构建......因此,在sts中,我们必须手动进行......为此,步骤如下:右键单击项目〉转到构建项目......然后在构建项目后将完成,然后转到项目〉在服务器上运行,然后项目将运行...和索引和控制器都将正常工作...
希望这会有帮助🙂