MVC 흐름 설명(자세히)
.do : .do[쩜두]파일을 주소창에 치면 web.xml에 의해 디스패처 서블릿으로 간다.
web.xml : 맨 처음 톰캣 켜면 자동으로 읽히는 파일. 쩜두(*.do)와 디스패처 서블릿을 연결시켜 놓았다. 쩜두 치면 디스패처 서블릿으로 간다.
C(컨트롤러)
디스패처 서블릿 : 3가지 역할을 한다. 1. 자바클래스를 패키지 단위로 가져온다. 2. 어노테이션을 이용해서 메소드를 찾아서 발동시킨다(invoke) 3. 특정 위치로 포워드시킨다
컨트롤러 : 클래스를 구분하는 인터페이스. 실행시간 동안(@Retention(RetentionPolicy.RUNTIME)) 클래스(@Target(ElementType.TYPE))를 어노테이션으로 구분해준다.
리퀘스트 매핑 : 메소드를 구분하는 인터페이스. 실행시간 동안(@Retention(RetentionPolicy.RUNTIME)) 메소드(@Target(ElementType.METHOD))를 어노테이션으로 구분해준다.
뷰 리졸버 : 페이지를 찾아올 때 쓴다. 앞에 경로(prefix, ‘/’ )와 뒤의 경로(suffix, ‘.jsp’)를 붙여서 리턴해준다.
모델 : HttpServletRequest를 상속받아서 리퀘스트와 리스폰스를 private으로 선언하되 get(게터)할 수 있게 만든다. 겟 리퀘스트는 파라미터를 가져올 때 쓰이고, 겟 리스폰스는 파일을 다운로드할 때 쓴다.
M(모델)
Controller : 스프링의 모델을 ‘컨트롤러’라 부른다.(스트러츠는 ‘액션’) 스프링의 컨트롤러는 어노테이션으로 메소드가 구분되어 있다.
DAO : 1. Config.xml을 읽어와서 처리한다. 2. sql을 실행하는 메소드를 쓴다.(jsp파일 맨 위쪽에 적히는 자바로직을 수행)
Config.xml : 타입 알리아스(별칭), 오라클 정보(겟커넥션, 디스커넥션), 매퍼(mapper.xml)의 경로와 이름을 갖고 있다.
mapper.xml : 매퍼xml은 sql문을 모아두고 있다. 마이바티스의 sql문을 쓸 때 #{}은 데이터고, ${}는 컬럼이다.
VO : 밸류 오브젝트. 데이터를 모아둔다. DTO(데이터 트랜스퍼 오브젝트)와 같다. private로 변수 선언하고 게터/세터를 준다.
V(뷰)
jsp파일 등이 있다.
———————————————————————————————————————-
유저가 *.do를 치면 web.xml에 의해 디스패처 서블릿이 연결된다. 디스패처 서블릿은 자바클래스를 메모리 할당하고, (2)어노테이션으로 메소드를 발동하고, (3)포워드시킨다.
메모리 할당되는 클래스들은 모델(스프링에선 ‘XXX컨트롤러.java’)이다. 모델 내부는 어노테이션으로 클래스, 메소드가 전부 구분되어 있다.(클래스를 런타임동안 연결해주는게 “컨트롤러”, 메소드와 연결해주는게 “리퀘스트 매핑”이다).
모델 내부에서 어노테이션으로 메소드를 찾았다면 해당 메소드를 발동한다(invoke). 메소드 안쪽은 보통 DAO를 사용하고, DAO는 Config.xml에 의해서 mapper.xml과 연결되어 있다. 처리가 끝나면 포워드를 통해 페이지를 이동한다.