1. 사용자가 Spring 프런트 엔드 컨트롤인 serveltdispatcher 서블릿에 의해 캡처되는 요청을 서버로 보냅니다.
2.? Dispatcher 서블릿이 요청 URL 을 구문 분석하여 요청 자원 식별자 (URI) 를 가져옵니다. 그런 다음 URI 호출 HandlerMapping 에 따라 처리기 객체 및 처리기 객체에 해당하는 인터셉터를 포함하여 처리기가 구성한 모든 관련 객체를 가져온 다음 마지막으로 HandlerExecutionChain 객체로 반환합니다.
3.? Dispatcher 서블릿은 획득한 HandlerAdapter 에 따라 적절한 Handler adapter 를 선택합니다. (주: HandlerAdapter 가 성공적으로 획득되면 인터셉터의 선행 처리기 (...) 메소드가 이 시점에서 실행됩니다. ) 을 참조하십시오
-응? 4.? 요청에서 모델 데이터를 추출하고, Handler 의 매개변수를 채우고, Handler (컨트롤러) 실행을 시작합니다. Handler 의 매개변수를 채우는 과정에서 구성에 따라 Spring 은 다음과 같은 추가 작업을 도와드립니다.
HttpMessageConvet: Json, XML 등의 요청 메시지를 객체로 변환하고 객체를 지정된 응답 정보로 변환합니다.
데이터 변환: 요청 메시지에 대해 데이터 변환을 수행합니다. 예를 들어 정수, 배정도 등으로 연결되어 있습니다.
데이터 루트: 요청 메시지의 데이터 형식입니다. 예를 들어 문자열을 형식화된 숫자 또는 형식화된 날짜로 변환합니다.
데이터 검증: 유효성 (길이, 형식 등) 을 검증합니다. ) 에 대한 데이터로, 검증 결과는 BindingResult 또는 Error 에 저장됩니다.
5.? 처리기가 실행된 후 dispatcher 서블릿으로 보냅니 까? ModelAndView 객체를 반환합니다.
6.? 반환된 ModelAndView 에 따라 적합한 ViewResolver (Spring 컨테이너에 등록해야 함) 를 선택하고 dispatcher 서블릿으로 돌아가시겠습니까? 을 눌러 섹션을 인쇄할 수도 있습니다
7.? ViewResolver 는 모델과 뷰를 결합하여 뷰를 렌더링합니다.
-응? 8. 렌더링 결과를 클라이언트에 반환합니다.
Spring 작업 흐름 설명
왜 Spring 은 서블릿 (dispatcher servlet) 만 모든 요청을 처리하도록 허용합니까?
-응? 자세한 내용은 J2EE 디자인 패턴-프런트 엔드 제어 모드를 참조하십시오.
왜 Spring 은 HandlerMapping 과 HandlerAdapter 를 모두 사용하여 핸들을 처리합니까?
객체 지향 단일 책임의 원칙에 부합하고, 코드 구조가 명확하고, 유지 보수가 간편하며, 가장 중요한 것은 코드 재사용성이 높다는 것이다. 예를 들어, HandlerAdapter 를 사용하여 다양한 핸들러를 처리할 수 있습니다.