| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- produces
- application.properties
- jointpoint
- @RequestMapping
- PointCut
- Java
- c:if
- AOP
- spring
- 유효성검사
- .xml
- 의존주입
- 비즈니스레이어
- springjdbc
- Model
- @
- 바인딩변수
- SpringBoot
- 어노테이션
- @Valid
- @ResponseBody
- 생성자주입
- after-throwing
- MVC
- springmvc
- gradle
- 서비스레이어
- 스프링
- @RequestParam
- frontController
- Today
- Total
메모장
기존 JSP -> Spring 이관작업 흐름 정리 본문
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 경로에 따라 이동
'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 |