[11-D3][notice] DTO, Manager의 제작 및 사용

[01] DTO, Manager의 제작 및 사용

1. DTO ActionScript Class

>>>>> src/flex/notice/NoticeFxDTO.as
package flex.notice{
    public class NoticeFxDTO{
        /** 일련번호 */
        private var _idx:Number;
        /** 제목 */
        private var _subject:String;
        /** 내용 */
        private var _content:String;
        /** 패스워드 */
        public var _passwd: String;
    
        function NoticeFxDTO(){
        }

        public function toString():String{
            return "idx : " + idx + "\n" +
           "subject : " + subject + "\n" +
           "content : " + content;
        }
        
        // ---------------------------------------
        // getter, setter 선언
        // ---------------------------------------
        public function set idx(idx:Number):void{
            this._idx = idx;
        }
        
        public function get idx():Number{
            return this._idx;
        }
        
        public function set subject(subject:String):void{
            this._subject = subject;
        }
        
        public function get subject():String{
            return this._subject;
        }

        public function set content(content:String):void{
            this._content = content;
        }
        
        public function get content():String{
            return this._content;
        }        
        
        public function set passwd(passwd:String):void{
            this._passwd = passwd;
        }
        
        public function get passwd():String{
            return this._passwd;
        }
                  
    }
}




2. DTO Test

>>>>> MXML: NoticefxDTO_Test.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
                layout="absolute" creationComplete="init()" width="512">
    <mx:Script>
        <![CDATA[
            public function init():void{
                import noticefx.NoticeFxDTO;
                // import notice.NoticeMgr;
                
                var msg:String = "";
                var dto:NoticeFxDTO = new NoticeFxDTO();
                
                dto.idx = 1;
                dto.subject = "오늘은 금요일 입니다.";
                dto.content = "내용입니다.";
                
                msg += dto.idx + "\n";
                msg += dto.subject + "\n";
                msg += dto.content + "\n";
                
                txa.text = msg;   
            }
            
        ]]>
    </mx:Script>

    <mx:TextArea x="10" y="10" width="493" height="373" id="txa" fontSize="18" backgroundColor="#000000" color="#ADF884" text=" 처리 내용 출력 화면" fontWeight="bold"/>
    
</mx:Application>





3. Manager class

>>>>> src/flex/notice/NoticeFxMgr.as
package flex.notice{
public class NoticeFxMgr{
import mx.controls.Alert;
import mx.controls.DataGrid;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
private var service:HTTPService;  // 서버로 요청 보내는 객체
private var dto:NoticeFxDTO;
private var mgr:NoticeFxMgr;
// 배포용 주소, 미리 jsp를배포하면 배포시 편리함.
public var url:String = "http://nulunggijsp.cafe24.com/noticefxjsp/";
// 개발용 주소
// public var url:String = "http://localhost:9090/www_flex/noticefxjsp/";
public var listUrl:String = url + "list.jsp";    // 목록
public var saveUrl:String = url + "save.jsp";    // 저장
public var readUrl:String = url + "read.jsp";    // 읽기
public var updateUrl:String = url + "update.jsp";// 수정
public var removeUrl:String = url + "remove.jsp";  // 삭제
public var _dg:DataGrid;       // 데이터 출력
// 생성자
public function NoticeFxMgr(dg:DataGrid){
this._dg = dg;
}
public function list():void{
// Ajax's XMLHTTPRequest equal
service = new HTTPService();
service.method = "POST";
// 서버로 요청할 jsp 주소
service.url = listUrl;
// 응답 성공일 때 처리할 함수 등록
service.addEventListener(ResultEvent.RESULT , listHandler);
// 응답 실패일 때 처리할 함수 등록
service.addEventListener(FaultEvent.FAULT , faultHandler);
// 서버로 요청        
service.send();
}
// 서비스 요청 응답 처리
private function listHandler(event:ResultEvent):void{
// 시스템 지정: event.result + jsp 처리 태그 연결
var err_code:uint = event.result.result_set.result_meta.err_code;
var proc_cnt:uint = event.result.result_set.result_meta.proc_cnt;
var message:String = event.result.result_set.result_meta.message;           
if(err_code >= 1) {
mx.controls.Alert.show(message, "에러 발생");                
} else {
// 데이터그리드의 컬럼과 일치하지 않아도 XML태그의 
// 내용은 모두 메모리에 저장됨.
this._dg.dataProvider = event.result.result_set.record;
}
}        
public function save(dto:NoticeFxDTO):void{
service = new HTTPService();
service.method = "POST";
service.url = saveUrl; // save.jsp
service.request = dto; // 서버로 보내는 DTO
service.addEventListener(ResultEvent.RESULT , refreshHandler);
service.addEventListener(FaultEvent.FAULT , faultHandler);        
service.send();
}
public function update(dto:NoticeFxDTO):void{
service = new HTTPService();
// POST방식으로 데이터를 전송한다.
service.method = "POST";
service.url = updateUrl;
service.request = dto; 
service.addEventListener(ResultEvent.RESULT , updateDeleteHandler);
service.addEventListener(FaultEvent.FAULT , faultHandler);        
service.send();         
}
// 서비스 요청 응답 처리
private function updateDeleteHandler(event:ResultEvent):void{
// 시스템 지정: event.result + jsp 처리 태그 연결
var err_code:uint = event.result.result_set.result_meta.err_code;
var proc_cnt:uint = event.result.result_set.result_meta.proc_cnt;
var message:String = event.result.result_set.result_meta.message;           
if(err_code >= 1) {
mx.controls.Alert.show(message, "에러 발생");                
} else {
list();
}
}
public function remove(dto:NoticeFxDTO):void{
service = new HTTPService();
// POST방식으로 데이터를 전송한다.
service.method = "POST";
service.url = removeUrl;
service.request = dto; 
service.addEventListener(ResultEvent.RESULT , updateDeleteHandler);
service.addEventListener(FaultEvent.FAULT , faultHandler);        
service.send();         
}
// 등록또는 삭제시 목록을 갱신한다.
private function refreshHandler(event:ResultEvent):void{
list();
}
// 시스템상에서 발생한 오류 처리 
private function faultHandler(event:FaultEvent):void{
Alert.show(event.message.toString(), "시스템 오류");
}
}
}





Posted by ▶파이팅◀

블로그 이미지
Let's start carefully from the beginning
▶파이팅◀

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함