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:

    Mitgliederdatenbank   contextConfigLocation /WEB-INF/spring-security.xml, /WEB-INF/applicationContext.xml   hibernateFilter org.springframework.orm.hibernate3.support.OpenSessionInViewFilter  sessionFactoryBeanName hibernateSessionFactory    springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy    hibernateFilter /*   springSecurityFilterChain /*    org.springframework.web.context.ContextLoaderListener    springGwtRemoteServiceServlet org.spring4gwt.server.SpringGwtRemoteServiceServlet   mvc-dispatcher org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/applicationContext.xml  1    springGwtRemoteServiceServlet /ui/springGwtServices/*   mvc-dispatcher /welcome   mvc-dispatcher /login   mvc-dispatcher /logout   mvc-dispatcher /loginfailed   mvc-dispatcher /member/*    /login   

有人可以告诉我这里出了什么问题吗?

我相信问题与这里描述的URL映射问题相同 – Spring web MVC 。

除非你使用alwaysUseFullPath,否则spring mvc会将* part与你指定的映射匹配(例如/ 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

我遇到了同样的问题,并通过使用解决了问题

  

此标记将配置两个bean DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。

我还在我的调度程序servlet配置文件中添加了标记。