2010. 8. 6. 18:18 flex
[11-D3][notice] DTO, Manager의 제작 및 사용
[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(), "시스템 오류");
}
}
}
'flex' 카테고리의 다른 글
[13-D4][notice] MXML main 화면(noticeFx.mxml) (0) | 2010.08.06 |
---|---|
[12-D4][notice][JSP] Eclipse 프로젝트 설정, 글 목록(list.jsp) (0) | 2010.08.06 |
[10-D3][notice] DB, ActionScript Class, getter, setter function (0) | 2010.08.06 |
[09-D3] Container & Component 배치 (0) | 2010.08.06 |
[08-D3] 기본 콤포넌트(ListBox, ComboBox, Panel, Form, ControlBar.....) (0) | 2010.08.06 |