rawfish의 개발공부.log
로그인
rawfish의 개발공부.log
로그인
4. MVC 프레임워크 만들기[Model 추가]
이건회
·
2022년 7월 2일
팔로우
0
Spring
0
springmvc
목록 보기
15/29
이제 서블릿에 대한 종속성을 제거할 것이다.
요청 파라미터 정보는 MAP으로 대신 넘기면 컨트롤러가 서블릿 기술을 몰라도 동작시킬 수 있다.
request 객체에 데이터를 담아 Model로 사용하는 대신에 Model 객체를 만들어 반환하도록 할 것이다.
또 view 이름의 중복을 제거할 것이다.
컨트롤러는 뷰의 논리이름을 반환하고, 실제 물리 위치의 이름음 프론트 컨트롤러에서 처리하도록 할 것이다. 복잡한 것은 프론트 컨트롤러에서 처리하도록 하는 것
v3에서는 프론트 컨트롤러 호출 시 View 뿐 아닌 ModelView를 반환할 것이다.
ModelView에서는 논리 이름을 반환했으므로 ViewResolver에서 이를 물리 이름으로 바꿔 MyView를 반환하고 프론트 컨트롤러에서 render를 호출할 것이다.
서블릿 종속성 제거를 위해 모델을 직접 만들고 View 이름까지 전달하도록 하겠다.
modelView를 생성해주고 생성자 만든 후 viewName, model 변수를 만들어 getter setter를 생성해준다.
model 변수에 원하는 값을 넣어 나중에 꺼내 쓸 수 있도록 할 것이다.
V3 컨트롤러를 만드는데 기존 v2,v1과 달리 HttpServletRequest request, HttpServletResponse response 등이 없다. 서블릿 의존성을 낮춘다.
회원 가입 컨트롤러를 생성한다. ModelView를 반환하되 경로는 논리적 경로를 넣는다.
회원 저장 컨트롤러를 생성한다. paraMap에 요청 파라미터 정보를 모두 넣어 보내주고, 나중에 age 등등 정보를 꺼내 쓴다.
ModelView를 반환할 때 member 정보를 넣어 반환해준다.
마찬가지로 회원 정보 컨트롤러도 members 객체를 담은 ModelView를 반환한다.
이제 프론트 컨트롤러를 만들 것이다. 기본 틀은 v2에서 복사해온다
이제 paramap을 넘겨주는 방식으로 로직을 짤 것이다. 먼저 paramMap 변수를 만들고 request 안dml 모든 파라미터를 다 꺼내온다.
반복문을 돌며 paramName 키로 밸류를 꺼내오며 paramMap 변수 안에 넣어준다.
paramMap 안의 내용을 process 로컨트롤러 호출시켜 모델뷰로 반환한다.
반복문을 돌리는 부분은 메소드화 한다.
이제 ModelView에서 뷰네임을 viewName 변수에 담아 Myview에서 물리적 경로로 변환할 수 있도록 넣어주고 이를 view 변수에 넣어준다.
이후 view를 통해 render를 호출할 수 있다.
물리 이름을 만드는 로직은 viewResolver로 메소드화 한다.
이제 Model을 render에 같이 넘겨줘야 한다.
render에 mv.getModel()로 넘겨주어야 하므로 이 메소드를 생성해줄 것이다.
모델의 데이터를 forEach로 전부 꺼내서 request에 키,밸류로 값을 전부 담아놓는다.
그 다음 같은 로직으로 forward 해준다.
모델의 데이터를 꺼내 담는 로직은 메소드화 해준다.
서버에서 제대로 돌아가는지 확인
이건회
하마드
팔로우
이전 포스트
4. MVC 프레임워크 만들기[View 분리]
다음 포스트
4. MVC 프레임워크 만들기[단순하고 실용적인 컨트롤러 - v4]
0개의 댓글
댓글 작성