gpt4 book ai didi

java - 为什么 Spring DispatcherServlet 找不到我的 Controller 方法?

转载 作者:行者123 更新时间:2023-11-28 22:33:45 25 4
gpt4 key购买 nike

假设我有以下 Spring Controller :

@Controller
public class FooController
{
@RequestMapping(value = "/foo", method = RequestMethod.GET, headers = { "Content-Type=text/plain" })
@ResponseBody
public String foo(String bar)
{
return "Bar is " + bar;
}
}

这是关联的 web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID"
version="2.5">
<display-name>Foo</display-name>
<servlet>
<servlet-name>FooServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FooServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

这是关联的 servlet.xml 文件:

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven/>
<bean id="FooController" class="foo.FooController"/>
</beans>

仅供引用,我使用的是 Spring Framework 3.0.5 版。我知道这是一个旧版本,但这是我必须遵守的约束条件。

因此,我将从上面构建的 WAR 文件(例如 FooApp.war)部署到 Tomcat(版本 7.0.67)。一切都很好。但是当我导航到 http://localhost:8080/FooApp/foo?bar=baz 时,我在浏览器中收到 404 错误,在 Tomcat 控制台中收到以下错误:

Apr 28, 2016 9:43:33 AM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleNoSuchRequestHandlingMethod
WARNING: No matching handler method found for servlet request: path '/foo', method 'GET', parameters map['bar' -> array<String>['baz']]

所以我的问题是,我的配置有什么问题导致了这个问题?我确定它是某种东西,但我无法弄清楚它是什么。

编辑:根据 M. Deinum 的评论,删除了 SimpleUrlHandlerMapping

最佳答案

我从 here 下载了示例项目并开始研究它与我的测试项目之间的不同之处。我最终将其缩小到在我的 Controller 方法的 @RequestMapping 注释中存在 headers = { "Content-Type=text/plain"} 。删除它后,一切正常。

关于java - 为什么 Spring DispatcherServlet 找不到我的 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com