[SPRING] DispatcherServlet, Resolver 및 Controllers는 어떻게 상호 작용합니까?
SPRINGDispatcherServlet, Resolver 및 Controllers는 어떻게 상호 작용합니까?
좋아, 그래서 나는 꽤 일반적인 오류가 발생했습니다 :
경고 : 이름이 'app'인 DispatcherServlet의 URI [/WEB-INF/jsp/index.jsp]가있는 HTTP 요청에 대한 매핑이 없습니다.
기존 답변을보고 있는데 구성 요소가 상호 작용하는 방식에 대해 정말 잘 설명하지 못했습니다. 기존 답변을 바탕으로 내 문제를 해결할 수 없으므로 DispatcherServlet 및 Resolvers의 기능에 대한 자세한 설명을 제공 할 수 있기를 바랍니다.
Eclipse로 개발하면서, 나는 다음과 같은 구조를 가지고있다 :
/src/com/whiuk/philip/web/controller/IndexController.java
/WebContent
/WebContent/WEB-INF
/WebContent/WEB-INF/web.xml
/WebContent/WEB-INF/app-servlet.xml
/WebContent/WEB-INF/jsp/index.jsp
Eclipse Deployment Assembly는 다음과 같이 전개된다는 것을 의미합니다.
/src -> WEB-INF/classes
/WebContent -> /
/ivy.xml[*] -> WEB-INF/lib
DispatcherServlet과 모든 파일 (/ *)에 대한 매핑을 정의하는 web.xml 파일이 있습니다.
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
패키지를 검색하고 InternalResourceViewResolver를 정의하는 app-servlet.xml 파일이 있습니다.
<context:component-scan base-package="com.whiuk.philip.web" />
<mvc:annotation-driven />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
인덱스에 대한 RequestMapping있는 IndexController 있어요 :
@Controller
public class IndexController {
@RequestMapping(value = "/index", method = RequestMethod.GET)
public ModelAndView index() {
return new ModelAndView();
}
}
이 등록 된 것을 보여주는 로그 :
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping registerHandlerMethod
INFO: Mapped "{[/index],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}"
onto public org.springframework.web.servlet.ModelAndView
com.whiuk.philip.web.controller.IndexController.index()
마지막으로 index.jsp 파일이 있습니다.
어떤 사람이 잘못된 구성이 무엇인지 설명해 주시면 오류가 맨 위에 표시되고, 가능한 경우 DispatcherServlet, Resolvers 및 컨트롤러로 보내는 방법에 대해 문장을 제공합니다.
해결법
-
==============================
1.Spring의 DispatcherServlet이 / *로 매핑 되었기 때문에 모든 요청 (괜찮습니다)마다 호출되는 경향이 있지만, 요청이 JSP 페이지 (/ WEB-INF / jsp / index.jsp)를 호출합니다.
Spring의 DispatcherServlet이 / *로 매핑 되었기 때문에 모든 요청 (괜찮습니다)마다 호출되는 경향이 있지만, 요청이 JSP 페이지 (/ WEB-INF / jsp / index.jsp)를 호출합니다.
내가 알고있는 해결책은 다음과 같습니다.
기본 서블릿 경로 /에 매핑하십시오.
<servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
위와 같이 볼 수있는 한 가지 문제는 웹 애플리케이션의 루트 아래에있는 리소스가 불행하게도 DispatcherServlet에 의해 처리된다는 것입니다. DispatcherServlet은 그걸로 무엇을 해야할지 모르기 때문에 기본 서블릿 핸들러를 이런 식으로 등록해야합니다.
<mvc:default-servlet-handler />
-
==============================
2.스프링 웹 MVC 애플리케이션에서 요청의 "흐름"을 설명하려고 노력할 것이다.
스프링 웹 MVC 애플리케이션에서 요청의 "흐름"을 설명하려고 노력할 것이다.
신청서에 신청서를 보낼 때 다음과 같은 일이 발생합니다 :
100 % 정확하지 않거나 내가 뭔가를 놓친다면 자유롭게 저를 수정하십시오 :-)
from https://stackoverflow.com/questions/14015642/how-does-the-dispatcherservlet-resolver-and-controllers-interact by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring - bean 초기화를위한 정적 final 필드 (상수) 사용 (0) | 2019.01.09 |
---|---|
[SPRING] javax.inject.Named annotation은 무엇을 위해 사용되어야 하는가? (0) | 2019.01.09 |
[SPRING] 클래스 패스에서 파일 읽기 (0) | 2019.01.09 |
[SPRING] Spring MVC의 "redirect :"접두사는 항상 http로 리다이렉트됩니다 - https에 머물게하려면 어떻게해야합니까? (0) | 2019.01.09 |
[SPRING] @Autowired - 종속성을 위해 발견 된 유형의 한정 콩 (0) | 2019.01.09 |