Model-View-Controller
웹 어플리케이션 개발 시 MVC 패턴을 적용하여 각각의 역할 별 작업이 가능 하도록 분담하는 설계 패턴을 의미
Model
웹 애플리케이션의 비즈니스 로직, 수행할 서비스를 담당
Service
여러 DAO를 호출하여 데이터 접근/갱신을 하고, 그렇게 읽은 데이터에 대한 비즈니스 로직을 수행하여 Controller에 그 결과를 전송하는 클래스
DAO (Data Access Object)
데이터베이스에 직접 접근하여 요청 받은 결과를 반환하는 클래스
VO (Value Object)
계층 간 데이터 교환을 위한 객체 클래스를 말한다. 동의어 : DTO(Data Transfer Object), Domain Object, Bean, Entity
VO의 동의어들은 그 유래에 따라 의미가 다른 부분이 있지만, 정확한 구분이 어렵기 때문에 쓰임 상 유사한 의미로 쓰임
View
사용자가 요청하거나 요청한 정보를 응답 받아 볼 수 있는 화면을 담당하며 JSP, HTML 등을 통해 표현
Controller
사용자의 요청을 전달 받아 응답처리를 위한 Service를 호출하고 결과를 View에 전송하는 클래스로 Servlet으로 작성
전달 받은 정보를 바탕으로 사용자 요청을 분석한 후, 이를 서비스에 전달할 VO 객체를 생성하여 Service에 전달하고 Service로부터 결과를 관련된 View 화면에 담아 사용자에게 응답
RequestDispatcher
사용자의 요청을 다른 서블릿이나 JSP 페이지에 전달할 때 사용하는 클래스로 request 객체를 사용해 생성할 수 있음
RequestDispatcher 예시
RequestDispatcher view = request.getRequestDispatcher("/result.jsp" );
view.forward( request, response );
응답할 View가 동적 페이지인 경우(JSP)
① request 내장 객체를 통해 RequestDispatcher 객체 생성
RequestDispatcher view = request.getRequestDispatcher("/result.jsp");
② 대상 View에서 필요한 정보를 request 영역에 저장
request.setAttribute("member", member);
③ request와 response를 인자 값으로 전달하여 정보 전송
view.forward( request, response );
request 객체의 속성(Attribute)은 한 번의 reques와 response 주기 동안에만 존재함
따라서 forward로 전송할 경우 데이터를 해당 페이지에 함께 담아 전달 가능
응답할 View가 정적 페이지인 경우(JSP)
정적인 html의 경우에는 동적으로 화면을 생성할 필요가 없으므로 응답 view에 정보를 전달할 필요가 없음
이 때 사용하는 것이 HttpServletResponse 객체의 sendRedirect() 메소드
response.sendRedirect("/error.html");
이렇게 sendRedirect 정보를 받은 클라이언트는 서버로부터 받은 페이지의 주소로 다시 요청을 시도함
'프로그래밍 > JSP' 카테고리의 다른 글
09.03(EL & JSTL) (0) | 2020.09.03 |
---|---|
09.02(JSP Action Tag) (0) | 2020.09.02 |
08.27(JSP 디버깅) (0) | 2020.08.27 |
08.26(JSP Exception 처리) (0) | 2020.08.26 |
08.25(JSP 지시자 태그) (0) | 2020.08.25 |