2013-10-23 2 views
1

컨트롤러의 메서드에 몇 가지 SYSOUT가 있으며 콘솔 로그에 표시됩니다. @RequestMapping이 모두 예상대로 작동하는지 확인합니다. . 환경 bean의 @Autowiring도 작동합니다 (SYSOUT에 의해 올바르게 표시됩니다).스프링 MVC : 컨트롤러 RequestMapping이 작동하지만 반환 값이 항상 404

그러나 '반환 값 (String 유형을 반환하는 메서드를 사용하고 있습니다.)은 404로 끝납니다. * .jsps를 찾을 수 없습니다. 프로젝트가 Maven을 사용 중입니다. IDE는 일식 kepler, FWIW입니다.

내 ViewResolver는 좋지 않습니다. 연결 해제를 볼 수 없습니다.

내 web.xml의 :

 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>BluPrint</display-name>

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

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

<context-param>
<param-name>groupId</param-name>
<param-value>${project.groupId}</param-value>
</context-param>

<context-param>
<param-name>artifactId</param-name>
<param-value>${project.artifactId}</param-value>
</context-param>

</web-app>

내 servlet.xml에 :

<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
xmlns:batch="http://www.springframework.org/schema/batch" xmlns:task="http://www.springframework.org/schema/task"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xjp="http://www.corpabc.com/schema/xjp"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
http://www.corpabc.com/schema/xjp http://www.corpabc.com/schema/xjp/beans.xsd">

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

<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />

<import resource="classpath:corpabc/xjp/configuration/properties.xml" />

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

<bean id="dataSourceDB2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/BluPrint" />
<property name="resourceRef" value="true" />
</bean>

<xjp:environment artifactId="${artifactId}" groupId="${groupId}" />

</beans>

내 컨트롤러 :

package com.corpabc.bluprint.controllers; 
import java.util.Map; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 
import corpabc.xjp.configuration.env.Environment; 

/** 
* 
* Handles requests for the application. 
*/ 

@Controller 
@RequestMapping("/*") 
public class BluPrintController { 

    @Autowired 
    private Environment xjpEnvironment; 

    @RequestMapping("/init") 
    protected String catchInit(Map<String, Object> model) { 
     System.out.println("Got into init method. XJP Environment: "+xjpEnvironment); 
     model.put("xjp", this.xjpEnvironment); 
     return "envtest"; 
    } 

    @RequestMapping("/*") 
    protected String catchAllOthers(Map<String, Object> model) { 
     System.out.println("Got into catch-all method: "); 
     return "defaultPage"; 
    } 
} 

내은 /WEB-INF/jsp/을 받고있다 ...하지만 URL ~localhost:8080/bluprint/init 입력 ... 나는 여기에 404

defaultPage.jsp 존재하지 않는 ... 내가 기대하는 것없는 조건을 얻을, 그리고 내가 ~localhost:8080/bluprint/를 입력 할 때 내가 무엇을 얻을 . 어쨌든 그것이 404가되어야하는지 확실하지 않지만, 그것이 내가 얻는 것입니다.

+0

앱을 어떻게 실행합니까? WAR 파일을 사용하는 경우 내부를보고 파일이 존재하는지 확인할 수 있습니까? – Admit

답변

10

서블릿 매핑에 문제가있는 것 같습니다./* jsp를 포함하여 디스패처 서블릿을 통해 모든 것을 강제합니다. *를 잃어 버리십시오. 내가 서블릿 사양 및 업데이트의 관련 부분 .... 서블릿 스펙에서

확인할 수있는 것들 : 웹 응용 프로그램 배포 설명자에 매핑 의

12.2 사양, 다음과 같은 구문에 사용됩니다 경로 매핑에 '/'문자로 시작하고 '/ *'접미사로 끝나는 문자열이 사용됩니다.

  • '*.'접두사로 시작하는 문자열은 확장 매핑으로 사용됩니다.

  • 빈 문자열 ("")은 응용 프로그램의 컨텍스트 루트 (즉, 양식 요청)에 정확히 매핑되는 특수한 URL 패턴입니다. 이 경우 경로 정보는 '/'이고 서블릿 경로와 컨텍스트 경로는 빈 문자열 ("")입니다.

  • '/'문자 만 포함 된 문자열은 응용 프로그램의 "기본"서블릿을 나타냅니다. 이 경우 서블릿 경로는 요청 URI에서 컨텍스트 경로를 뺀 경로 정보는 null입니다.

  • 다른 모든 문자열은 완전 검색에만 사용됩니다.

그래서 당신은 너무 JSP 요청이 운영자 서블릿으로 다시 라우팅 대신 JSP로 타격받을는 * .jsp로 매핑을 오버라이드 (override)/*를 지정합니다.

+0

** 바로 돈으로 ** 고마워! –

관련 문제