2013-10-25 2 views
1

Struts 1.x에서 Existing 프로젝트를 사용하고 있고 다음 단계에서 스프링 MVC를 통합하려고합니다.스프링 mvc가 jar 파일에있는 컨트롤러 클래스의 URL을 읽을 수없는 이유

[org.springframework.web :

나는 배치에 시동을 서블릿을 읽고 서버에 항아리 파일에서 각각의 컨트롤러 클래스를로드 할 수 있으며, 컨트롤러 클래스에 대한 다음과 같은 정보를 제공하는 받는다는 프로젝트가 .servlet.handler.BeanNameUrlHandlerMapping] 거부 된 빈 이름 'SSOController': URL 경로가 확인되지 않았습니다.

URL을로드하지 않는 것처럼 보이므로 여기에 임의의 웹 서비스 호출을 수행 할 수 없습니다.

내 web.xml의 항목은 다음과 같습니다

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/hello.do</url-pattern> 
</servlet-mapping> 

디스패처 서블릿이 다음 항목 :

<context:annotation-config /> 
<context:component-scan base-package="com.ga.action.controller" /> 

<mvc:resources location = "/resources/" mapping = "/resources/**" /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 



<!-- JAXB2 marshaller. Automagically turns beans into xml --> 
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
<property name="classesToBeBound"> 
<list> 
<value>com.ga.action.controller.PEMUtil</value> 
</list> 
</property> 
</bean> 

컨트롤러 클래스 코드는 다음과 같습니다 예외가 사용을 나타냅니다

@Controller 
@RequestMapping("/hello.do") 
public class TestController { 

    @RequestMapping(method = RequestMethod.GET, value = "/") 
    public @ResponseBody String printTokenMessage(
      @RequestParam("nLiveToken") String message, 
      HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 

     System.out.println(message); 
    } 
} 
+0

빈 이름은 URL에 매핑되어야합니다. 컨트롤러 코드를 보여주십시오. – Bart

+0

위의 컨트롤러 코드를 찾으십시오. – gjosh

+0

문제는 요청 매핑 패턴에 있다고 생각합니다. 다음 링크에서 사용 된 매핑을 수정하고 확인해 주시겠습니까? http://javapapers.com/spring/spring-annotation-based-controllers/ – sshah

답변

0

때문에 BeanNameUrlHandlerMapping ther e는 컨텍스트에서 /hello.do Bean이어야합니다.

@RequestMapping 어노테이션을 사용하므로 어노테이션 주도형 핸들러 매핑이 기본적으로 활성화되어 있다고 가정합니다. 그렇지 않습니다. ServletDispatcher이 처리기 매핑을 찾지 못하면 BeanNameUrlHandlerMapping이 생성됩니다. 당신이 당신의 응용 프로그램에서 주석을 사용하려면

당신은 당신의 상황에 맞는 구성으로

<mvc:annotation-driven /> 

을 정의해야합니다.

+0

을 추가했지만 동일한 URL이 매핑되지 않습니다. 심지어 web.xml에서 Hello.do의 "/"insted를 가져 왔고 contoller 클래스의 결과는 여전히 동일합니다. – gjosh

+0

디스패처를'/ *'에 매핑 한 후에도? – Bart

+0

예 @Bart 결과가 동일하게 유지됩니다. – gjosh

관련 문제