본문 바로가기

프로그래밍/웹

No mapping found for HTTP request with URI 해결.

스프링 프로젝트 초반 mapping 예제를 시험중에 이런메시지가나왔다.

No mapping found for HTTP request with URI [/.../.....jsp] in DispatcherServlet with name 'dispatcher'


//web.xml
  
 <servlet>
     <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping> 
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping> 

//springmvc-servlet.xml

<context:component-scan base-package="com.cho.controller" />

<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="cache" value="true" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

//MainController.java

@Controller
public class MainController {
@RequestMapping("/main.do")
public ModelAndView index(){
System.out.println("/main.jsp");
ModelAndView mav = new ModelAndView();
mav.setViewName("main");
return mav;
}
}

/main.do url로 접근시 서블릿에서 .jsp 로 바꿔서 뿌려주지만 다시 web.xml에서 설정한 

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>

이부분때문에 /main.jsp로 맵핑된 컨트롤러를 찾는다.
따라서 이 서블릿맵핑을 삭제해주면되겠다.