이 기사의 내용은 Spring MVC 프로젝트가 시작된 후의 실행 단계에 대한 것입니다(개략도 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Spring MVC 프로젝트 시작 후 실행 프로세스:
1. 실행 프로세스:
01. 웹 프로젝트가 시작되면 핵심 구성 파일을 포함하여 web.xml 파일을 로드합니다.
mvc가 설정되어 있기 때문입니다. web.xml 파일 코어 컨트롤러이므로 이 컨트롤러가 초기화됩니다
02 예를 들어 사용자의 요청 경로는 localhost:8080/hello
이때 /hello는 요청 경로로 간주됩니다 ====》 코어 구성 파일
03./hello에 있는 빈의 ID는 코어 컨트롤러에 의해 가로채어 프로세서 매퍼(HandlerMapping)
04를 찾습니다. 맨 아래 레이어는 먼저 적절한 HandlerMapping을 찾은 다음 프로세서 실행 체인을 반환합니다. (HandlerExecutionChain)
05. 프로세서 실행 강제 체인에는 실행될 컨트롤러와 (1-N 인터셉터)
06 프로세서 실행 체인의 핸들러에 따라 HandlerAdapter를 찾습니다. 컨트롤러의 유형에 따라 지정된 메소드를 실행합니다.
08. 실행 메소드는 ModleAndView
Modle ==》Map
View ==》String
09을 반환해야 합니다. 뷰는 실제로 논리적 뷰 이름입니다
뷰 파서는 실행되지 않습니다. 접두사와 접미사는 값이 없습니다. 뷰는 물리적 뷰 이름이어야 합니다
회로도:
2. 기본 코드 보기
01. web.xml 파일에서 핵심 컨트롤러를 클릭합니다.
02. Ctrl+o 해당 메서드 doDispatch
03을 찾습니다. 다음을 찾습니다. code
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) HttpServletRequest processedRequest = request; //请求对象 HandlerExecutionChain mappedHandler = null; //处理器执行链=我们即将执行的Controller+(1+拦截器) boolean multipartRequestParsed = false; //解析一个请求是否是文件上传请求
우리의 요청에 따라 실행되어야 하는 핸들러(Controller)를 찾으세요
Ctrl+마우스 왼쪽 버튼을 눌러 getHandler()를 입력하세요이 메소드의 반환 값이 프로세서 실행 체인이라는 것을 발견했습니다!
05. getHandler를 입력한 후
// Determine handler for the current request. mappedHandler = getHandler(processedRequest);
입력하고 보니 이 메소드가 인터페이스(HandlerMapping)에 있는 메소드인 것을 확인했습니다. 구현할 방법이 없으므로 계속해서 구현 클래스 AbstractHandlerMapping
07을 클릭합니다. 아래 코드를 찾아 요점을 깨뜨립니다
HandlerExecutionChain handler = hm.getHandler(request);
08. 그런 다음 얻은 프로세서 실행 체인이 코어 컨트롤러
Object handler = getHandlerInternal(request);
클릭합니다. getHandlerAdapter()
09에서 아래 코드의 중단점을 찾습니다. 기본적으로 3번을 실행
하지만 우리는 HelloController가 Controller 인터페이스를 간접적으로 구현한다고 작성하므로 SimpleControllerHandlerAdapter에서 요점만 깨면 됩니다!
12. 얻은 HandlerAdapter를 코어 컨트롤러에 반환합니다
13. 코어 컨트롤러의 프로세서 어댑터를 사용하여 다음 단계는 실제 코드를 실행하는 것입니다
// Determine handler adapter for the current request. HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
15. 우리의 HelloController는 이 클래스를 상속받습니다.
이 상위 클래스는 handlerRequestInternal(request, response);
16을 실행합니다. handlerRequestInternal
을 클릭하면 구현 클래스
if (ha.supports(handler)) { return ha; }를 찾을 수 있습니다.
위 내용은 Spring MVC 프로젝트 시작 후 실행 단계(개략도 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!