Spring

Spring MVC FrameWork 이해

cogito-new 2023. 5. 14. 23:02

Spring Framework 

WEB, WAS, DB

(1) WEB : 정적 리소스 처리

(2) WAS : 동적 리소스(Application resource) - JAVA(서블릿 컨테이너 기능  제공)

(3) DB

 

Servlet : HTTP 요청, 응답 정보를 개발자가 편리하게 사용 가능하도록 함.

 

1) 사용자의 HTTP 요청 → WAS (Request, Response) 객체를 만들고 Servlet 호출

2) 개발자는 Request, Response 객체에서 정보를 꺼내 사용

3) WAS는 Response 객체에 담긴 내용으로 HTTP 응답 정보 생성

 

톰캣처럼 Servlet을 지원하는 WAS = Servlet Container

- 요청시마다 Request, Response 객체를 새로 만드는 것은 비효율적이므로

  최초 로딩 시점에 Servlet 객체를 만들어두고 재활용한다.

 

→ Singleton을 사용하므로 객체는 하나. (ThreadPool)을 사용해 동시 요청을 처리하도록 함.

  (WAS에서 Multi Thread 지원)

 

→ JSP도 Servlet으로 자동 변환되어 사용됨.

 

JSP와 Servlet을 함께 사용해서 비즈니스 로직과 화면 표시를 함께 하면 유지보수가 어려워진다.

→ 따라서 비즈니스 로직과 뷰 로직을 분리하여 사용한다.

→ WEB-INF 폴더 아래에 JSP 파일을 저장하여 Controller 를 통하지 않고 외부에서 url로 접근하는 것을 방지한다.

 

------------------------------------

MVC 도입) 

해당 방식으로 분리하더라도, 코드 중복이 발생함.(view 이동시 경로, request.getRequestDispatcher 등)

 

Front Controller 도입 - 1)

Servlet 하나로 Client의 요청을 받는다.

url 요청이 들어오면 저장된 주소를 찾아 Controller를 실행시키고, view로 forward 시킨다.

 

View 분리 - 2)

컨트롤러에서 View로 이동하는 부분의 중복 코드를 공통 메소드 처리

 

Model 추가 - 3 )

컨트롤러에서 지정해주는 View (return 해주는) 이름의 중복이 존재하므로 이를 제거함.

 

 

 

 

 

 

반응형