메모장

기존 JSP -> Spring 이관작업 흐름 정리 본문

Spring/개념정리

기존 JSP -> Spring 이관작업 흐름 정리

Itchild 2024. 6. 21. 09:07
728x90
반응형

JSP MVC2 패턴 ( FrontController )

 

기존 JSP MVC2 패턴(FrontController) 을 이용하여 작성하였던 코드 흐름입니다.

1. View에서 *.do로 index.jsp 에서 실행 . 서블릿 파일 동작

2. FrontController가 받는다.

3. 추출한 값이 해당하는 *.do의 xxxAction 으로 간다.

4. xxxAction 에서 전달해줄 데이터(DB), 값, 경로설정

5. View로 보냄

 

Spring 으로 이관작업

 

1. View의 index.jsp에서 사용자(Client)가 *.do로 요청 보냄

2. web.xml에 대한 설정 때문에 DispatcherServlet 이 해당요청을 처리함

 

"컨테이너"는 설정파일을 보고 처리하는 애이기 때문에

+ .xml 이 따라 붙을 수 밖에 없다. 설정을 꼭 해줘야 되기 때문에

(서블릿 컨테이너로 web.xml 로 가서 언제 동작 할지 설정 )

스프링에선 execute() 가 아닌 HandlerMapping() 이 담당 !!

DispatcherServlet 에는 내부적으로 HandlerMapping이 있다.

HandlerMapping을 의존 주입 해줄건데 멤버변수로 설정해주고

HandlerMapping은 의존 주입을 init () 이라는 메서드로 한다.

JSP 에서 FrontController 는 new 작업을 일일히 다 해줘야 해서 singleton 패턴이 깨지는 단점이 있다.

Spring 에서는 DispatcherServlet 이

객체를 1개만 메모리에 생성하고 해당 객체를 재사용하는 == singleton패턴 을 유지 해준다.

 

3. HandlerMapping 에 의해 요청에 맞는 Controller 객체가 반환된다.(무슨 요청을 했는지 추출)

해당하는 Action ( x ) → Controller ( o ) 값 부르기 (값)

Factory 패턴 처럼 구성되어있는 HandlerMapping 사용. HandlerMapping 한테 주면

그 Controller의 .handleRequest() 으로 경로를 알 수 있다.

 

4. Controller 객체는 과거 .excute -> 현 .handleRequest() 메서드 수행

5. ActionForward 였는데 → 메서드 수행결과로 String 을 반환

6. ViewResolver 가 그걸 보고 맞는 view 를 제공 (응답)

: Controller 류의 객체가 .handleRequest()의 수행결과로 String을 반환 했을때 , '어떻게 갈지'와 '어디로 갈지'를 판단해서 처리해주는 주체 이다.


핵심정리

★ HandlerMapping 과 XXXcontroller 가 의존관계는 아님 ★

DispatcherServlet 와 HandlerMapping이 의존 관계

HandlerMapping에는 컬렉션의 Map <키, 값> mappings 가 멤버변수

 

mappings 에 의존 주입을 해줘야 하는데 얘는 기본 생성자에 생성자 주입 방식으로 한다.

여기서 controller를 꺼내다 쓰는 개념

 

*.do 요청 String 키 값을 주면 그것에 해당하는 객체 값을 준다.

다시 DispatcherServlet 으로 가서 path 경로에 따라 이동

 

 

728x90
반응형

'Spring > 개념정리' 카테고리의 다른 글

@ 어노테이션의 종류  (0) 2024.06.21
Spring MVC 구조 설명  (1) 2024.06.21
Annotation ( @, 어노테이션 )  (0) 2024.05.30
Spring 의존성,의존주입(setter) 컬렉션  (0) 2024.05.30
<Bean> 태그의 속성  (0) 2024.05.30