Spring MVC FrameWork 이해
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 해주는) 이름의 중복이 존재하므로 이를 제거함.