gpt4 book ai didi

java - Spring DispatcherServlet : No mapping found for HTTP request

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:54 26 4
gpt4 key购买 nike

我在使用 spring mvc 3.2.4.RELEASE 实现一个非常简单的页面时遇到问题。

我的 Controller 看起来像这样:

@Transactional
@Controller
public class MembersDetailsController {
@Autowired
private MemberService memberService;

@RequestMapping(value = "/member/{name}", method = RequestMethod.GET)
public String displayMember(@PathVariable String name) {
System.out.println(name);
return "member";
}

@RequestMapping(value = "/member", method = RequestMethod.GET)
public String displayMember() {
System.out.println("Empty");
return "member";
}
}

当我打电话

http://127.0.0.1:8080/member

相应的方法正在按要求执行。然而,我调用

http://127.0.0.1:8080/member/test

http://127.0.0.1:8080/member/test/

我得到一个带有日志输出的 404:

WARN  org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/member/test] in DispatcherServlet with name 'mvc-dispatcher'

真正奇怪的是之前的日志说:

INFO  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/member/{name}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String 
INFO org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/member],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String

这意味着据我所知映射应该是正确的。

这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!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>Mitgliederdatenbank</display-name>

<!--Configuration-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-security.xml, /WEB-INF/applicationContext.xml</param-value>
</context-param>

<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>hibernateSessionFactory</param-value>
</init-param>
</filter>

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<!--Spring Security Filter-->
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!--Context Loader-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Servlets -->
<servlet>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>


<!-- Mapping -->
<servlet-mapping>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<url-pattern>/ui/springGwtServices/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/loginfailed</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/member/*</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>/login</welcome-file>
</welcome-file-list>

</web-app>

谁能告诉我这里出了什么问题?

最佳答案

我认为问题与此处描述的问题相同 URL Mapping issue - Spring web MVC .

除非您使用 alwaysUseFullPath spring mvc 会将 * 部分匹配到您指定的映射(例如/member/member/test )。请在此处查看 alwaysUseFullPath 的文档(第 17.4 节)http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html .

但是,不幸的是,此属性未通过 xml 配置元素公开(如果您使用的是 xml 配置),因此如果您希望映射按照您在问题中描述的方式工作,则需要将其配置为此处描述:http://blog.sarathonline.com/2013/07/enable-alwaysusefullpath-with.html

关于java - Spring DispatcherServlet : No mapping found for HTTP request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098969/

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