2013-10-31 6 views
-1

web.xml (공존)에 정의 된 일반 서블릿과 Spring MVC dispatcherServlet이 있습니다. web.xml의 Spring MVC DispatcherServlet에 대한 매핑은 "/ admin/*"이다. request.getDispatcher()를 만드는 정규 서블릿을 "/ admin/..."폴더 구조 아래 jsp로 전달했습니다. 이것은 내부 포워드이기 때문에 봄 디스패처 인 Servlet이 주목을받지 못할 것으로 기대합니다. Spring의 DispatcherServlet이이 사실을 알았고이 JSP 로의 매핑을 찾지 못했다는 사실을 알게되었습니다.Spring MVC의 비정상적인 동작

아무도 여기에서 실제로 무엇이 일어나고 있는지 아십니까?

업데이트 : 질문이 명확하지 않았다 미안 해요 :

우리는 스프링 MVC를 사용하지 않고 기존 응용 프로그램이 있습니다. 우리는 기존의 기능을 그대로 유지하고 다른 새로운 기능을 위해 Spring MVC를 추가하기로 결정했습니다. . 그래서 여기

은 web.xml에 매핑입니다 :

<servlet> 
    <servlet-name>springRouted</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring/mvc-config.xml</param-value> 
    </init-param> 
    <load-on-startup>4</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>springRouted</servlet-name> 
    <url-pattern>/admin/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>existingServlet</servlet-name> 
    <url-pattern>existing.do</url-pattern> 
</servlet-mapping> 

ExistingServelt이 request.getRequestDispatcher을 (호출하면) 앞으로 ("/ 관리/... JSP"), 다음 봄이 오류를보고 할 것 "/admin/...jsp"에 대한 매핑을 찾을 수 없습니다. request.getRequestDispatcher() .forward ("/ admin/... jsp")를 호출하면 서블릿 컨테이너가 web.xml을 다시 검사하고 Spring의 DispatchServlet을 통해 경로를 재 지정합니다.

답변

0

"/ *"(별표)를 매핑하면 모든 확장 (.jsp, .js 등)을 dispatcherServlet에 매핑한다는 의미입니다.

@RequestMapping("/myPage1.do") 
public String getMyPage1() { 
    // Some logic here 

    return "myPage1"; 
} 

@RequestMapping("/myPage2.do") 
public String getMyPage2() { 
    // Some logic here 

    return "myPage2"; 
} 

// And so on 

그런 다음 당신이 당신의 web.xml을 변경해야합니다 :

아마 가장 간단한 sollution 예를 들어,이 확장을 "수도 있었죠"와 "* 수도 있었죠"에 디스패처 서블릿을 매핑 RequestMapping @ 모두를 확인하는 것입니다 이렇게 :

<servlet-mapping> 
     <servlet-name>dispatcherServlet</servlet-name> 
     <url-pattern>/admin/*.do</url-pattern> 
    </servlet-mapping>