2012-06-28 2 views
3

내 JSP를 아래에있는 WEB-INF/JSP /, 그리고 다음은 내 web.xml에 있습니다 :org.springframework.web.servlet.DispatcherServlet noHandlerFound (찾을 수 없습니다 매핑)

<!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>Checkout</display-name> 

    <servlet> 
    <servlet-name>myservlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>*.action</url-pattern> 
    </servlet-mapping> 


</web-app> 

여기 페이지 제품의 매핑입니다 .jsp로는 내가 액세스를 시도하고있는 :

@Controller 
@RequestMapping("/product.action") 
public class ProductController { 

    /** 
    * Show the product selection form 
    * 
    * @return 
    */ 
    @RequestMapping(method=RequestMethod.GET) 
    public String get() { 
     return "products.jsp"; 
    } 

} 

다음 링크에서 페이지에 액세스하려고 :

http://localhost:8080/myapp/product.action 

내가 브라우저에서 404을 받고, 그리고 난 콘솔에 다음과 같은 경고를 얻을 :

Jun 28, 2012 10:55:23 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping found for HTTP request with URI [/myapp/product.action] in DispatcherServlet with name 'myservlet' 

내가 구성에 뭔가를 놓친 거지? , 감사합니다.

편집 : 당신이 RequestMapping를 지정하면

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 

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



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


</beans> 

답변

1

문제는 컨트롤러가 감지되지 않았습니다. 베이스 패키지를 com.myapp에서 com.myapp.controller으로 변경 했으므로 이제는 정상적으로 작동합니다.

1

는, URI는 확장자가 안 : 내가 행운와의 ApplicationContext에의 viewResolver 빈을 추가했습니다. Dispatcher 서블릿은 URI 맵핑을 탐색하는 동안 요청 URI에서이를 생략합니다.

@RequestMapping("/product") 을 사용해야 작동합니다.

뷰 리졸버를 사용할 때 두 번째 것은 JSP 파일의 이름 만 반환합니다. .jsp 확장자를 추가하지 마십시오. InternalViewResolver가 대신 해줍니다.

+0

와 함께 Controller 등록이 필요로하는

<mvc:annotation-driven /> 

이없는 당신의 봄 구성 XML 한 문제를보고 너무 작동하지 않았다 , 구성 또는 web.xml 매핑에서 아무 것도 변경해야합니까? –

+0

그것은'404 : description 요청한 리소스 (/ 구독/제품)를 사용할 수 없습니다 .' –

+0

이 오류가 발생했을 때? 컨트롤러 처리기 메서드가 호출되었지만 반환 된 뷰가 찾을 수없는 것 같습니다. 그렇다면 뷰 이름을 반환 할 때 상대 경로 여야합니다. –

0

사용이 클래스 = "org.springframework.web.servlet.view.UrlBasedViewResolver" 대신 클래스 = "org.springframework.web.servlet.view.InternalResourceViewResolver"

에 응용 프로그램 컨텍스트 bean. 당신이 컨텍스트 XML에서의 viewResolver를 사용하는 경우

0

, 당신은 방법을 반환 statemant을 "제품"을 얻을 변경하고 폴더 계층 구조가

+0

코드를 수정해도됩니까? 효과적 일 것입니다 ... – NREZ

2

선일 언급 한 어떤 규칙에 따라 적합한 지 확인해야한다. 난 당신이

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

내가 그 시도