MVC 연습을 위해 만든 패키지이다.
action, controller, dao, db, svc, vo 총 6개의 패키지를 만들었다.
✍ action
Action 클래스가 위치한다. Controller 역할. Action 인터페이스 및 XXXAction 클래스 위치.
✍ controller
FrontController 클래스 위치. 초기 진입적 역할.
✍ dao
JavaBean 중 비즈니스 로직 처리 역할을 수행 할 DAO 클래스(=Model)위치
✍ db
데이터베이스 연결 및 관리 작업을 담당하는 JdbcUtil 클래스 위치.
이 곳에서 getConnection(), close(), commit(), rollback() 메서드를 정의한다.
✍ svc
DB 작업 요청 및 처리 결과를 판별, 트랜잭션 처리를 담당할 Service 클래스가 위치한다.
✍ vo
JavaBean 중 데이터 저장 역할을 수행 할 XXXBean(DTO) 클래스가 위치한다.
또한, 포워딩 정보를 저장하는 ActionForward 클래스가 위치한다.
🔍 Action 클래스 역할
서블릿 요청에 대한 처리를 담당하는 FrontController의 제어 작업을 보조할 Action 클래스를 정의한다.
- FrontController 클래스는 흐름 제어를 담당하고
요청에 대한 처리 준비 작업(파라미터 접근)은 Action 클래스가 담당하도록 모듈화한다.
- 단, request 또는 response 객체 등에 접근해야 하므로 FrontController 클래스가 Action 클래스의 메서드 호출 시
HttpServletRequest, HttpServletResponse 객체를 전달받아야 한다.
- 요청 처리 후 FrontController가 포워딩 작업을 수행해야 하므로 FrontController에 전달할 포워딩 정보를
Action 클래스가 생성하여 리턴해야 한다.
package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import vo.ActionForward;
public interface Action {
public ActionForward execute(HttpServletRequest request, HttpServletResponse response);
}
XXXAction 클래스가 가져야 할 공통 메서드를 정의하는 Action 인터페이스이다!
XXXAction 클래스에서 수행할 작업을 공통 메서드인 execute() 메서드로 정의한다.
왜 클래스가 아니라 인터페이스를 사용하는가?
바로 인터페이스의 특징 때문이다. 자바에서 클래스는 다중상속이 불가능한 반면
인터페이스는 다중상속이 가능하다. 인터페이스의 가장 큰 특징은 구현부가 없는 추상메서드를 가지며, 인터페이스를 상속받기 위해서는 상속받는 클래스가 추상 클래스 이거나 or 인터페이스의 추상메서드를 오버라이딩 해야 한다.
이 특징들을 사용하여 모든 XXXAction 클래스들은 Action 인터페이스를 상속받는다. 그리고 Action 인터페이스의 추상메서드인 execute()를 오버라이딩 해야한다.
정리하자면
=> XXXAction 클래스에서 execute() 메서드를 구현(=오버라이딩)하도록 강제하기 위해 추상메서드 형태로 정의
=>
'개발 > MVC & Servlet' 카테고리의 다른 글
[MVC] Action 클래스 (0) | 2023.03.23 |
---|---|
[MVC] Action 인터페이스 (0) | 2023.03.23 |
[MVC] DTO 클래스 (0) | 2023.03.23 |
[MVC] DAO 클래스 정의 (0) | 2023.03.23 |
[Servlet] Redirect & Dispatch (0) | 2023.03.11 |