스프링 MVC-4

존스노우·2022년 2월 8일
0

SPRING-MVC

목록 보기
4/18

MVC 프레임워크 만들기

단계별로 개발하면서 스프링 MVC가 이런 구조로 만들어졌구나 이해해 보자

프론트 컨트롤러 소개

도입전 - 클라이언트가 공통로직을 깔고 컨트롤로직을 각각 깔아줘야 된다.
입구가 없다.. Ex)view 이동하는 로직들..

도입후 - 서블릿도입 공통로직을 두고 각자 처리하세요.. (수문장 역할 도입)

요청 매핑할때 서블릿을 사용해서 요청 매핑을 했는데.
프론트컨틀로가 직접 이제 호출해 줌.
서블릿을 만드는 이유 -> Url 매핑에서 클라이언트 가 요청에서 처음 들어가는 부분이 서블릿인데.

이제는 프론트 컨트롤러에서..

프론트 컨트롤러 도입 -V1

mvc코드 복사하기..

각각 등록폼 저장 리스트 코드 복사하고

프론트 컨트롤러만들기

성공..

인터페이스로 공통 함수를 만들고 각 폼 저장 목록을 상속받는다.

소스코드 보면서 다형성을 통해 깔끔하게 구현가능.. 음 대단..

View 분리! v2

컨트롤러가 직접 포워드를 하지않고
MyView로 반환

Model 추가 v3

request , response 정보가 필요없는 부분들이 많다.

서블릿 기술을 몰라도 동작할 수 있다?

변경의 지점을 하나로..

이제는 ModelView를 반환

논리 이름을 물리이름으로 바꿔주는 viewResolver!

viewResolver를 사용한 이유?

물리적인 경로 이름이 바뀌면? viewResolver만 바꾸면 됨!

paramMap // 파라미터 넘어온거 다넘겨줌
컨트롤러에서는 ModelView 만들어서 넘겨줌 (논리경로 , 결과값(모델로, 리스트, 객체등)

viewResolver로 물리 주소로 변환해준뒤
Myview 생성 !

랜더링!

  1. 모델뷰의 역할: 논리적경로 저장-> / 오브젝트객체(디비에서 저장된 값 저장)
  2. 프론트페이지 (화면 파라미터값저장 / 뷰리졸버로 실제 물리적경로 반환) -> 마이뷰로 넘겨줌
  3. MyView 모델안에 저장된값을 리퀘스트로 (setAttribute) 로저장시킴
    최종적으로 물리적경로, 화면에 저장시킬객체 화면에 출력
    정리 최종적으로 request 요청을 반복적으로 사용하니 모델로 이를 대체해주고.
    MyView 수문장을 통해 화면으로 이동시키는 로직을 합쳐준다.(경로를 줘서)
    뷰리졸버를 통해 화면이름만 가지고있으면 실제 물리경로로 변환시켜줌
    등...
    서블릿 종속 제거 , 뷰 경로 종속 제거

단순하고 실용적인 컨트롤러

컨트롤러가 ViewName만 반환?

프론트가 모델도 넘겨줌 (텅텅빈 모델이라 프론트뷰가 잘 작성해서 넘겨준다)

컨트롤러에 빈 모델을 넘겨주고 컨트롤러 안에서 모델을 담아주면

모델은 채워지게 된다.

유연한 컨트롤러 1 -V5

어댑터 패턴!

핸들러 = 컨트롤러

어댑터 목록에서 컨트롤러를 찾아온다.


supports 컨트롤러 어댑터를 찾는다.

handle -> 핸들러 호출 모델앤뷰를 반환해서

유연한 컨트롤러 2 -V5

정리

@RequestMapping
RequestHandlerAdapter 이 애노테이션을 처리해주는 어댑터

profile
어제의 나보다 한걸음 더

0개의 댓글