struts로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

struts로 검색한 결과
등록일:2008-03-21 09:43:45
작성자:
제목:[파워유저가 알려주는 스트럿츠 프로그래밍] Chapter 6~7. 스트럿츠 구조 & 간단한 어플리케이션


Chapter 6.  스트럿츠 구조

 

스트럿츠 컨트롤러 : Action Servlet,  RequestProcessor,  Action, ActionForm

 

 

 

 

1. ActionServlet에 사용자의 요청 전달 후 처리 절차

 

- 웹 애플리케이션 구동

-  ActionServlet : 초기화되면서 각종 설정파일들 로드, Config class, requestProcessor 초기화

                         요청을 처리해줄 RequestProcessor를 찾아 요청 전달

-  RequestProcessor : 요청URL에 따라 ActionForm을 생성후 요청 파라미터 전달

-  Action : 비지니스 로직 수행 -> 수행 결과값을 ACtoinForm이나 스코프에 저장 -> RequestProcessor에 ActionForward 리턴

-  RequestProcessor에서는 ActonForwrad에 따라 뷰 영역의 리소스(주로 JSP) 호출

- 뷰 영역 : 프레젠테이션 로직 수행 --> 수행결과(주로 HTML)를 사용자에게 전달

 

 

2. 컨트롤러 영역에서 개발자가 할 일

- Action 클래스, ActionForm 클래스 생성

- 스트럿츠 설정 파일에 어떤 요청 URL에 대해 어떤 ACtion과 ActionForm을 사용할지, 어떤 뷰를 호출할지 등록

 

 

3. MVC 계층간의 의존성

 

의존성

     ↓

뷰(View)

데이터

컨트롤러(Controller)

모델(Model)

 

- 사용자의 요청이 컨트롤러에 전달 - 컨트롤러는 모델 영역의 비지니스 로직 수행 - 결과 데이터를 뷰로 전달

- 뷰에서 모델로의 의존성, 데이터는 모델에서 뷰로 전달

 

 

3. MVC 계층간의 데이터 교환

 

3-1.  Action

-  Action에서의 비지니스 로직을 수행하는 것은 좋지 않다.

- Action 에서는 사용자의 요청 파라미터로부터 서비스 호출에 필요한 데이터를 모아 서비스를 호출하는 역할만 수행하도록 구현한다.

 

3-2. ActionForm

- ActionForm을 그대로 모델 영역에 전달하는 것은 좋지 않다.

- 모델 영역은 컨트롤러나 뷰 영역과 독립적이어야 한다.

-  Action에서는 서비스를 호출할 때 ActionForm자체를 파라미터로 전달하는 것이 아니라

  서비스 호출에 필요한 파라미터를 ActionForm에서 추출하여 파라미터로 전달.

- 비지니스 로직의 수행 결과는 DTO를 통해 전달되며, 이를 AcfionForm이나 요청스코프, 세션 스코프에 담아 뷰에 전달

 

4. ActionForward 에 의한 프리젠테이션 로직의 선택

- 어떤 비지니스 서비스를 호출할지는 개발자가 Action 소스 코드 안에 직접 구현 but, 로직 수행결과에 따라 어떤 뷰를 호출할 지는 설정파일로 정의.

- Action이 호출될 때 ActionMapping 객체를 통해 전달

- RequestProcessor는 Action 에서 리턴한 ActioForward의 정의에 따라 웹 리소스를 호출

 

 

5. 스트럿츠 태그 라이브러리

- 요청 스코프나 세션스코프에 저장되어있는 ActionForm 이나 개발자가 따로 저장한 데이터에 쉽게 접근할 수 있다.

- 자바 코드를 대신하는 태그를 제공, 소스가 깨끗해짐.

 

 

6. 스코프

- ActionForm도 결국 하나의 자바빈즈 --> ActionForm을 JSP에 전달하기 위해 스코프를 사용

- 페이지 스코프 : 해당 JSP에서만 유용하므로 사용 불가

- 애플리케이션 스코프 : 애플리케이션 전체에 공유되므로 스트럿츠의 각종 설정사항을 저장하는 용도로만 사용

- 요청 스코프 / 세션 스코프 : ActionForm 을 어디에 저장할 지는 스트럿츠 설정파일(struts-config.xml)에서 설정한다.

 

 

 

Capter 7. 간단한 어플리케이션

 

* 예제 중 SSG(Simple struts based Groupware) 중 비밀번호 변경 부분을 대상으로 분석해봄.

 

1. 요청의 수행

 

passwordModifiy.do --> PasswordModify.jsp --> PasswordForm --> PasswordSaveAction --> EmployeeService --> EmployeeDAO

 

1) PasswordForm

    : org.apache.struts.action.ActionForm 클래스를 상속, 요청 파라미터로 전달되는 값들은 getter, setter 메소드를 정의해서 가져옴.

    : 입력 파라미터의 무결성 검사를 수행하려면 validate() 메소드 호출하면 되나, 이 예제에서는 직접 구현했음.

2) PasswordSaveAction

    : org.apache.struts.action.Action 클래스 상속

    : execute() 메소드를 재정의하여 수행하고자 하는 작업을 구현

 

 

2. 모델 만들기

 

1) 퍼시스턴스 계층

    : DAO(Data Access Object) 패턴을 구현한 것

    : 데이터베이스 테이블에 대한 CRUD(Create, Read, Update Delete)를 전담

2) 서비스 계층

    : 업무 단위별로 여러개의 DAO 관리, 이들간의 관계를 정의하는 비지니스 룰과 트랜잭션 관리

  

 

3. struts-config.xml 파일 설정과 Messager 정의

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD struts Configuration 1.1//EN"

                               "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

    <data-sources />

    <form-beans>

        <form-bean name="ApprovalPathListForm" type="com.eoffice.ui.approval.mgmt.ApprovalPathListForm"/>

    </form-beans>

    <global-exceptions />

    <global-forwards />

    <action-mappings>

        <action path="/approval/mgmt/ApprovalPathList" scope="request" parameter="method"

            input="/approval/mgmt/ApprovalPathList.jsp" name="ApprovalPathListForm"     

            type="com.eoffice.ui.approval.mgmt.ApprovalPathListAction">

            <forward name="treeList" path="/approval/mgmt/ApprovalPathTreeList.jsp" redirect="false"/>

            <forward name="body" path="/approval/mgmt/ApprovalPath.do"/>

        </action>

    </action-mappings>

<controller contentType = "txt/html; charset=utf-8" />

<message-resuorces parameter="resourse/messages"/>

</struts-config>

 

1) config 파일

    : "passwordModify.do" 정의 : 아무런 로직 없이 단순히 /hr/PasswordModify.jsp를 포워드한다.

    : "passwordSave.do" 정의 : passwordForm을 사용하며 PasswordSaveAcion 클래스를 등록

    : input 속성 : validate() 메서드 호출시 Actionerrors가 하나 이상 있는 경우 요청의 처리를 중단하고 호출할 페이지

    : <foward> 요소 : Action의 수행결과에 따라 포워드할 뷰를 지정(여러개 지정 가능)

2) message 정의

    : 리소스 번들의 위치를 지정하고, 해당 언어 파일을 읽어들인다.

    : 사용자가 선호하는 언어별로 저장된 리소스 번들에서 "button.change"로 정의된 문장을 출력 <bean:message key-"buttion.change"/>