스프링mvc - MVC프레임워크

meluu_·2024년 1월 5일
0

스프링

목록 보기
11/27
post-thumbnail

🌿 단계별 MVC 프레임워크


프론트 컨트롤러 패턴

하나의 프론트 컨트롤러를 만들어
공통된 기능을 프론트 컨트롤러가 처리하게 끔 한다.
스프링의 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어있다.

V1


컨트롤러에서 거의 모든 것을 처리한다.

V2

별도의 뷰를 처리하는 객체 생성

V3

  • 모델을 추가하고 서블릿 종속성을 제거(HttpServletRequest 등)

  • 뷰 이름 중복을 제거하고 뷰의 논리 이름을 반환

    • "static/member-form.jsp" -> "member-form"
    • 뷰 리졸버를 두어 논리 뷰 이름을 물리 뷰 이름으로 변경 및 MyView 객체를 반환
    • view는 render을 호출하여 html 화면 렌더링
    • view.render(mv.getModel(), request, response)
    • 모델 정보도 받고 JSP로 포워드

V4

실용성을 더한 버전이다.

  • model 객체는 파라미터로 전달 되어 Controller에서 사용
  • Controller는 뷰 이름만 반환

V5

유연성을 더한 버전으로 각 컨트롤러의 구조가 달라도 어댑터를 사용하여 컨트롤러를 사용할 수 있다.

  • 핸들러 어댑터 : 핸들러(컨트롤러)의 중간다리 역할
  • 핸들러 : 컨트롤러의 넓은 범위

boolean supports(Object handler)

  • 어댑터가 핸들러를 처리할 수 있는지 판단

ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler)

  • 핸들러 호출
  • ModelView mv = adapter.handle(request, response, handler);
Object handler = getHandler(request)

private Object getHandler(HttpServletRequest request) {
 String requestURI = request.getRequestURI();
 return handlerMappingMap.get(requestURI);
}

실질적인 스프링의 MVC도 V5와 같은 구조를 가진다고 한다.
어댑터를 사용하여 여러 종류의 핸들러들을 사용할 수 있다는 것은 정말 유용한 것 같다.


🔖 학습내용 출처

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

profile
열심히 살자

0개의 댓글