[SPRING] 기본 Spring MVC 설정 : InternalResourceViewResolver를 사용하는 PageNotFound
SPRING기본 Spring MVC 설정 : InternalResourceViewResolver를 사용하는 PageNotFound
첫 번째 Spring 3 MVC 설정을 실행하려고합니다.
내 응용 프로그램은 "grapevine"이라는 서버 컨텍스트와 함께 tomcat에서 실행됩니다.
테스트 목적으로 http : // localhost : 8080 / grapevine / test에서 WEB-INF / jsp / noSuchInvitation.jsp의 내용을 렌더링하기위한 요청을 얻으려고합니다.
내가 이것을 시도 할 때, 나는 404를 얻고있다. 그리고 로그는 나의 jsp가 존재하지 않는다고 제안한다 :
WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp] in DispatcherServlet with name 'grapevine'
나는 이것을 어딘가 잘못 설정 했음에 틀림 없다. 그러나 내가 잘못한 것을 볼 수는 없다.
다음은 모든 관련 스 니펫입니다.
웹 :
<servlet>
<servlet-name>grapevine</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>grapevine</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
내 맥락에서 :
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
제어 장치:
@Controller
public class ParticipantInvitationController {
@RequestMapping("/test")
public ModelAndView test()
{
return new ModelAndView("noSuchInvitation");
}
로그:
DEBUG org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.JstlView: name 'noSuchInvitation'; URL [/WEB-INF/jsp/noSuchInvitation.jsp]] in DispatcherServlet with name 'grapevine'
DEBUG org.springframework.web.servlet.view.JstlView - Forwarding to resource [/WEB-INF/jsp/noSuchInvitation.jsp] in InternalResourceView 'noSuchInvitation'
DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'grapevine' processing GET request for [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp]
WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/grapevine/WEB-INF/jsp/noSuchInvitation.jsp] in DispatcherServlet with name 'grapevine'
DEBUG org.springframework.security.web.context.HttpSessionSecurityContextRepository - SecurityContext contents are anonymous - context will not be stored in HttpSession.
DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request
해결법
-
==============================
1.이것은 web.xml의
이 너무 넓기 때문입니다. 값이 / *는 서블릿이 모든 요청을 수신하도록 구성되었으며 서블릿에서 JSP에 대한 요청을 포함한다는 것을 의미합니다. 표시되는 오류 메시지는 자체 전달 된 요청을받는 DispatcherServlet에서 온 것입니다. 이것은 web.xml의
이 너무 넓기 때문입니다. 값이 / *는 서블릿이 모든 요청을 수신하도록 구성되었으며 서블릿에서 JSP에 대한 요청을 포함한다는 것을 의미합니다. 표시되는 오류 메시지는 자체 전달 된 요청을받는 DispatcherServlet에서 온 것입니다. 보다 구체적인
을 선택해야합니다. / xyz / * url-pattern>을 입력하면 URL이 http : // localhost : 8080 / grapevine / xyz / test가됩니다. -
==============================
2.그냥 / *를 URL 패턴으로 바꾸십시오. 그것은 작동합니다 ...
그냥 / *를 URL 패턴으로 바꾸십시오. 그것은 작동합니다 ...
-
==============================
3.해결 방법 1 : * .html 및 * .json (또는 xml, gif, png ...)에서 서블릿을 등록 할 수 있습니다.
해결 방법 1 : * .html 및 * .json (또는 xml, gif, png ...)에서 서블릿을 등록 할 수 있습니다.
<servlet> <servlet-name>RestServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>RestServlet</servlet-name> <url-pattern>/</url-pattern> <url-pattern>*.html</url-pattern> <url-pattern>*.json</url-pattern> </servlet-mapping>
해결 방법 2 : / *에 서블릿을 매핑하려면 spring.xml 파일에 다음을 추가하십시오.
<mvc:default-servlet-handler/>
web.xml 파일에 다음과 같이 입력합니다.
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>/WEB-INF/jsp/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> </servlet>
여기에 설명 된 이유는 spring, web.xml입니다. / *보다 우선 순위가 높은 JSP 페이지에 대한 명시 적 핸들러를 등록합니다.
-
==============================
4.BEWARE : 오해의 소지가있는 오류 메시지 일 수 있습니다. 방금 나에게 일어났다.
BEWARE : 오해의 소지가있는 오류 메시지 일 수 있습니다. 방금 나에게 일어났다.
오류 메시지가 예기치 않게 / ContextName / ...을 경로의 시작 부분에 포함한다고해도 내부 접미사 또는 접두어 중 하나에서 철자가 틀릴 수 있습니다.
<property name="prefix" value="/WEB-INF-typo-Here/jsp/"/>
또는 파일 경로 자체.
필자는 필자의 오자를 수정 했으므로 잘 동작합니다. 나는 컨텍스트가 오류 메시지에 왜 표시되는지 모르며, 내 바보 오타를 무시하고이 질문에 대한 훌륭한 다른 공헌을 시도하게 만들었습니다. 그것이 당신에게 일어나지 않게하십시오!
BTW, 나는 봄 4.0.0 릴리스를 사용하고 있습니다.
-
==============================
5.나에게 나는 .jsp 템플릿뿐만 아니라 .html을 사용하여 문제를 해결했다.
나에게 나는 .jsp 템플릿뿐만 아니라 .html을 사용하여 문제를 해결했다.
from https://stackoverflow.com/questions/3878957/basic-spring-mvc-config-pagenotfound-using-internalresourceviewresolver by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 하위 프로젝트 / 구성 요소의 Spring 버전 행렬이 있습니까? (0) | 2019.02.03 |
---|---|
[SPRING] Spring 4에서 관계형 데이터베이스 기반 HTTP 세션 지속성을 수행하려면 어떻게해야합니까? (0) | 2019.02.03 |
[SPRING] Servlet 3 @WebServlet과 async를 Spring MVC 3와 함께 사용하는 방법? (0) | 2019.02.03 |
[SPRING] Spring을 통해 서버 모드에서 H2 데이터베이스 시작하기 (0) | 2019.02.03 |
[SPRING] Spring을 이용한 런타임 의존성 주입 (0) | 2019.02.03 |