◆ SPRING BOOT/정리

[SpringBoot] FrontController 패턴 , RequestDispatcher

쿠키린 2023. 2. 14. 00:17

Servlet/JSP 매핑 시 (web.xml 매핑 or @WebServlet어노테이션 사용)에 모든 클래스에 매핑을 적용시키기에는 

코드가 너무 복잡해진다.

 

즉,

web.xml에다가 어디로 가야하는 정의를 다하면(Servler/JSP 매핑)

너무 길어져

 

그래서

FrontController 패턴을 이용해야 해.

 

[설명]

.do 요청이 오면 FrontController로 보내야해

어떻게? web.xml에 정의되어 있으니까

 

바로 자원으로 접근을 못하고

톰캣으로 가게돼

 

톰캣이 최초로

- request : 요청한 정보가 들어있다.(객체)

- response : 요청한 정보를 토대로 응답 객체를 만드는거지

를 자동으로 만들어준다.

너무 좋지?

 

원래는 통신은

BufferdReader

BufferdWriter로 했잖아.

- 가변길이에 문자를 받는데 알아서 톰캣이 객체로 만들어줘

 

제공) request.getParamter();

 

그 다음에

web.xml에서 일을 하는거야

근데 하는 일이 많으니까

.do 특별 요청이 들어오면

FrontController 네가 낚아채서 일해! 

이거지

그런 다음

다시한번 request하게 되는데

이때 내부 자원에 접근 가능한거지

(request 객체를 새로 만드는게 아니라, 기존 request유지해서 덮어  씌우는거지)

 

FrontController 패턴이란?

최초 앞단에서 request 요청을 받아서 필요한 클래스를 넘겨준다.

왜? web.xml에 다 정의하기가 너무 힘들어서.

이때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new될 수 있다.

그래서 아래의 RequestDispatcher가 필요하다.

🔽

 

RequestDispatcher?

-> 필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.

 

데이터를 들고 페이지를 이동할 수 있는 기법이 RequestDispatcher

 

하지만!

스프링을 사용하면/??

 

FrontController 패턴을 직접짜거나 RequestDispatcher를 직접 구현할 필요가 없다.

왜냐하면 스프링에는 DispatchServlet이 있기 때문이다!

DispatchServlet은 FrontController + RequestDispatcher이다.

 

DispatchServlet 자동생성되어 질 때 수 많은 객체가 생성(IoC)된다.

보통 필터들이다.

해당 필터들은 내가 직접 등록할 수도 있고 기본적으로 필요한 필터들은 자동 등록 되어진다.

 

다음장이어서...


참고) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/unit/97747

 

학습 페이지

 

www.inflearn.com