Spring DispatcherServlet: mapping not found for HTTP request

I have a problem with a very simple page using spring mvc 3.2.4.RELEASE.

My controller is as follows:

@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"; } } 

When i call

 http://127.0.0.1:8080/member 

the corresponding method is optional. However i call

 http://127.0.0.1:8080/member/test 

or

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

I get 404 with boolean output:

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

What is really connected with the previous magazine:

 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 

This means that the display should be correct, as I understand it.

This is my 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> 

Can someone please give me a hint what is wrong here?

+6
source share
2 answers

I believe the problem is the same as described here The problem with URL mapping is Spring Web MVC .

If you do not use alwaysUseFullPath Spring, mvc will match * part with the mapping you specify (e.g. / member / member / test). See Docs for alwaysUseFullPath here (section 17.4) http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html .

However, unfortunately, this property is not displayed through the xml configuration element (if you use the xml configuration), so if you want your mappings to work as you described in your question, you need to configure it as described here: http : //blog.sarathonline.com/2013/07/enable-alwaysusefulfullpath-with.html

+7
source

I ran into the same problem and solved the problem using

 <mvc:annotation-driven/> 

This tag will configure the two beans DefaultAnnotationHandlerMapping and AnnotationMethodHandlerAdapter.

I also added a tag to the manager servlet configuration file.

 <context:component-scan base-package="PATH WHERE FIND CONTROLLERS" /> 
0
source

Source: https://habr.com/ru/post/954958/


All Articles