복붙노트

[SPRING] Spring DispatcherServlet : HTTP 요청에 대한 매핑이 없습니다.

SPRING

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>

아무도 나에게 여기에 무엇이 잘못되었는지 힌트를 주시겠습니까?

해결법

  1. ==============================

    1.문제는 여기 URL 매핑 문제 - 스프링 웹 MVC에서 설명한 것과 동일하다고 생각합니다.

    문제는 여기 URL 매핑 문제 - 스프링 웹 MVC에서 설명한 것과 동일하다고 생각합니다.

    alwaysUseFullPath를 사용하지 않는 한, mvc는 * 부분을 지정한 매핑 (예 : / member / member / test)과 일치시킵니다. docs에서 alwaysUseFullPath here (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

  2. ==============================

    2.나는 같은 문제에 직면했고 문제를 해결하기 위해

    나는 같은 문제에 직면했고 문제를 해결하기 위해

    <mvc:annotation-driven/>
    

    이 태그는 DefaultAnnotationHandlerMapping과 AnnotationMethodHandlerAdapter 두 Bean을 구성합니다.

    또한 디스패처 서블릿 구성 파일에 태그를 추가했습니다.

    <context:component-scan base-package="PATH WHERE FIND CONTROLLERS" />
    
  3. from https://stackoverflow.com/questions/19098969/spring-dispatcherservlet-no-mapping-found-for-http-request by cc-by-sa and MIT license