Spring DispatcherServlet:找不到HTTP请求的映射

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

我的控制器如下所示:

@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映射问题-Spring WebMVC相同。除非您使用alwaysUseFullPath,否则spring mvc将*部分与您指定的映射(例如/ member /member/test)匹配。请在此处(第17.4节)中查看有关alwaysUseFullPath的文档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

以上是 Spring DispatcherServlet:找不到HTTP请求的映射 的全部内容, 来源链接: utcz.com/qa/402270.html

回到顶部