컴퓨터응용과학부 Java Enterprize(DB) 제 10 주 2014년 11월 4일 프레젠테이션 층의 설계와 구현-스프링 웹플로우(7장)
다음 주 과제 8장 읽어오기 숙제 해서 제출하기
제7장 프레젠테이션 층의 설계와 구현 -스프링 웹플로우 스프링 웹 플로우 살펴보기 스프링 웹플로우의 State 스프링 웹플로우와 EL 스프링 웹플로우의 초기 설정 간단한 플로우 작성 응용편 정리
스프링 웹 플로우 살펴보기 웹 애플리케이션의 흐름에 주목한 프레임워크 구성 요소 프론트 컨트롤러나 뷰 구조가 없다. Flow State Transition
스프링 웹 애플리케이션 동작 개념
서블릿 기반의 웹애플리케이션의 스코프 Request Scope Session Scope Application Scope 브라우저가 요청하고 브라우저로 결과가 돌아오기까지 데이터가 유지된다. Session Scope 브라우저를 열고나서 브라우저를 닫을 때까지 계속 상태 가 유지된다. Application Scope 웹 애플리케이션이 실행하는 동안 계속 상태가 유지되고 모든 클라이언트에서 데이터가 동유된다.
스프링 웹 플로우의 스코프
스프링 웹플로우의 State View State Action State End State Decision State 화면 표시 처리를 하고 사용자에게 정보를 입력시킨다. Action State 비즈니스 로직을 실행한다. End State 현재 플로우를 종료하고 현재 플로우 스코프 상태를 초기 화 한다. Decision State 상태에 맞게 플로우의 조건 분기를 시행한다. Subflow State 현재 플로우에서 서브 플로우로 변화한다.
스프링 웹 플로우와 EL DI 컨테이너의 Bean들을 참조하여 사용할 수 있다. setter 가 있는 Bean은 멤버변수 처럼 사용할 수 있다. person.name (setName 메소드가 있는 경우)
스프링 웹플로우의 고유한 오브젝트 오브젝트 오브젝트 이름 오브젝트 타입 사용 예 Request 스코프 requestScope org.springframework.webflow.core.collection.MutableAttributeMap flowScope.customer.name Flash 스코프 flashScope View 스코프 viewScope Flow 스코프 flowScope Conversation 스코프 conversationScope 요청 파라메터 requestParameters org.springframework.webflow.core.collection.ParameterMap requestParameter.name
스프링 웹 플로우 웹 애플리케이션 생성 과정 Spring MVC Project 생성 필요한 Domain 클래스 추가 필요한 Service 클래스 추가 pom.xml에 웹플로우 라이브러리 추가 servlet-context.xml 에 wbeflow-config 네임스페 이스 추가 servlet-context.xml 에 웹 플로우가 가능하게 하는 Bean 등록 웹 플로우 정의 파일을 저장할 폴더 추가 웹 플로우 정의 파일 추가 웹 플로우가 사용하는 뷰 jsp 파일 추가
스프링 웹 플로우의 Bena 정의 파일 웹 플로우를 동작 시키려면 다른 Bean과 마찬가지 로 웹 플로우에 대한 요청을 처리 해줄 핸들러가 등록 되어 있어야 하고 웹 플로우 정의 파일로 부 터 필요한 빈을 생성할 수 있어야 한다.. 필요한 Bean 은 다음과 같다. FlowHandlerMapping : 요청과 실행할 오브젝트를 연결 하는 역할을 한다. FlowHandlerAdapter : DispatcherSrrvlet이 실제 필요 한 오브젝트를 호출할 수 있는 인터페이스를 제공한다.
servlet-context.xml 수정 실제 클라이언트의 요청에 대한 올바른 웹 플로우를 연결할 수 있도록 한다. /hello 로 요청한 경우에 hello.xml 에 기술 된 웹플로우를 연결한다. 클라이언트의 요청에 대하여 웹 플로우를 매핑하는 것을 가능하게 한다.
스프링 웹 플로우의 Bena 정의 파일 웹 플로우를 사용하려면 웹 플로우 라이브러리에 서 제공하는 다음을 설정해야 한다. ViewFactoryCreator : mvc의 뷰 오브젝트와 웹 플로우 를 연계해 준다. ViewResolver를 참조한다. FlowRegistry : 웹 플로우 정의 파일을 읽어서 필요한 웹 플로우를 등록하고 저장하고 있다. FlowBuilderServices 를 참조한다. FlowBuilderServices : 웹 플로우 정의파일로부터 플로우 를 구축할 때 필요한 오브젝트를 관리한다. ViewFactoryCreator를 참조한다. FlowExecutor : 실제 플로우를 실행하는 역할을 한다. FlowRegistry를 참조 한다.
servlet-context.xml 수정 나중에 참조하기 위하여 뷰리졸버에 id를 부여한다. Id는 viewResolver 로 설정하였다. Bean을 로드할 때 ejb.y2014.week11 패키지에 있는 모든 클래스를 사용하도록 설정한다.
servlet-context.xml 수정 사용하고자 하는 웹 플로우를 정의한 파일들의 위치를 설정한다. 여기에서는 flows 폴더 아래의 모든 xml 파일이 플로우 정의 파일 들이다.
View State 정의 화면에 보여줄 뷰(view)를 지정한다. transition 태그를 이용하여 화면에서 받은 event 의 이름에 따라 다른 스테이트로 이동한다. transition 태그가 실행되는 타이밍에 자동으로 검 증이 이루어진다.
Action State 정의 하나 이상의 evaluate 태그를 지정하여 비즈니스 로직을 수행한다. transition 태그를 이용하여 다음 상태를 결정한다.
End State 정의 플로우를 종료하고 플로우에서 관리하는 리소스를 반환한다.
스프링 웹 플로우의 URL 지정 JSP 파일 내에서의 웹 플로우 실행 URL은 ${flowExecutionUrl}에 저장된다. 이벤트를 서버로 전달하기 위해서는 다음 두 가지 방법을 사용한다. ${flowExecutionUrl}&_eventId=이벤트이름 ${flowExecutionUrl}&_eventId_이벤트이름
서브플로우 이용 서브플로우로 오브젝트를 넘기려면 <input > 태 그를 사용한다. 서브플로우로 부터 결과 오브젝트를 받으려면 <output > 태그를 사용한다.
Evaluate 가 가능한 장소 정의 가능한 장소 처리지정 장소(태그) 처리가 실행되는 타이밍 플로우 자신 flow/on-start/evaluate 플로우가 시작했을 때 flow/on-end/evaluate 플로우가 끝났을 때 Transition transition/evaluate 이동이 발생했을 때 Action state action-state/on-entry/evaluate 스테이트에 들어갈 때 action-state/evaluate 스테이트 안에서 action-state/on-exit/evaluate 스테이트를 나갈 때 View State view-state/on-entry/evaluate view-state/on-render/evaluate 뷰를 표시할 때 view-state/on-exit/evaluate 스테이트에서 나날 때 Decision state decision-state/on-entry/evaluate decision-state/if 조건 분기를 할 때 decision-state/on-exit/evaluate 스테이트에서 나갈 때 Subflow state subflow-state/on-entry/evaluate subflow-state/on-exit/evaluate