[Spring] 스프링 왜 사용할까?
스프링 수업 내용 필기입니다
▶ 스프링 프레임워크?
프레임워크는 하나의 방법론이다
우리나라 전자정부 표준프레임워크가 스프링 기반으로 되어있다
표준프레임워크 포털에서 관리
이클립스에 여러가지 모듈을 탑재
▷ JDBC = Java + SQL
1. 섞어서 사용하기 때문에 유지보수가 어려움
2. 모든 코드를 짜야하기 때문에 개발속도가 느려 생산성이 떨어짐
--> JDBC를 대신 MyBatis 프레임워크를 사용한다
▷ MyBatis (DB 프레임워크)
Java와 SQL을 분리해서 코딩
Java와 SQL을 연결하는 행위를 Mapping이라함
분리된 것을 Mapping해서 사용
▷ web = servlet(Controller) + jsp(View), class(Model, DAO, DTO)
스프링에서는 servlet 사용 X, jsp 사용 X, Model만 사용한다
--> 스프링 프레임워크의 다른 기술들로 대체
▶ 스프링은 MVC를 기본으로 한다
프레임워크는 하나의 방법론이다
눈에 보이지 않음 -> 코딩을 직접 해봐야 알 수 있다
▶ Spring 폴더의 S와 M의 의미
S -> Spring
M -> Maven, Spring 프레임워크의 관리도구 툴
프로젝트를 빌드하고 라이브러리(API)를 관리해주는 도구
▶ 3 Tier Architecture
▷ Presentation Layer (Web Layer)
Client --요청(handle)--> Server
1. FrontController ( servlet : Controller ) 시키는 얘 -> 스프링은 만들지 않고 알아서 제공, DispatcherServlet
2. HandlerMapping -> F.C. 와 POJO를 연결, handle을 전해줌 -> 스프링에서 제공
3. POJO**( Plain Old Java Object ) ( java : Controller ) F.C.가 할일을 대신해주는 얘, 실제 일하는 얘
POJO가 결과값을 F.C. 에게 리턴해준다
하지만, 논리적인 경로를 보내줬기 때문에 F.C.는 해석할 수 없다
--> F.C.는 View Resolver에게 값을 보내 논리적인 경로를 물리적인 경로로 다시 받는다
4. ViewResolver -> POJO가 리턴한 논리적 경로를 물리적 경로로 바꿔 F.C.에게 보내준다-> 스프링에서 제공
-->> 나머지가 다 만들어져있기 때문에 스프링은 POJO부터 만들면 된다, 생산성 up
F.C.는 ViewResolver에게 받은 값으로 View(jsp)로 간다.
View(jsp)는 F.C.가 요청한 값을 보내준다.
F.C.는 받은 값을 Client에게 보내준다.
▷ Business Layer(Service Layer)
Presentation Layer와 Persistence Layer를 연결해준다
로직을 처리하는 역할
▷ Persistence Layer
Model(Repository)
▶ JSP는 webapp/WEB-INF/views 에다가 만든다
왜 webapp이 아닌 views에 만드는가?
Client가 F.C. 없이 바로 View에 요청하지 못하게 하기 위해서!
Client는 서버에 요청할 때 무조건 F.C.를 거쳐야한다.
F.C.없이 실행할 경우 주소 = http://localhost:8081/web/WEB-INF/views/boardList.jsp
WEB-INF 는 톰캣의 보안 디렉토리 -> 브라우저에 WEB-INF가 노출되면 안된다
--> JSP는 URL상에 노출되지 않는다
Client가 http://localhost:8081/web/boardList.do 로 요청하면 그때 서버에서 처리해서 보여주는 것
forwarding, con view 사이에서 일어남