우선 MySQL에 DB가 있어야겠죠?
[code]
CREATE TABLE `Member_List` (
`ID` varchar(10) NOT NULL,
`Password` varchar(10) NOT NULL,
`Name` varchar(10) NOT NULL,
`Age` int(2) NOT NULL,
`Sex` varchar(2) NOT NULL,
`Tel` varchar(12) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=euckr COMMENT='회원 멤버 리스트입니다.';
INSERT INTO `Member_List` (`ID`, `Password`, `Name`, `Age`, `Sex`, `Tel`) VALUES
('mudchobo', '1234', '성종천', 25, '남', '01000000000'),
('k1011606', '1234', '강현욱', 24, '남', '01000000000'),
('shs8326', '1234', '성현식', 58, '남', '01000000000'),
('jor0737', '1234', '조옥렬', 49, '여', '01000000000'),
('boazzang', 'boalove', '보아짱', 30, '여', '0100000000'),
('webserv', 'babo', '웹서비스', 45, '남', '01000000000'),
('child', 'ggoma', '꼬마', 15, '여', '01000000000'),
('mudcosdf', '1234', '성종텬', 99, '남', '01000000000');
[/code]
자바클래스를 작성해봅시다.
그리고 blazeds프로젝트에 WebContent/WEB-INF/lib에 mysqlconnector넣는거 잊지마세요 ^^
blazeds프로젝트 아래 Java Resources: src부분에서 패키지를 만듭시다.
flex.member라는 패키지를 만들고, MemberVo라는 클래스를 생성해봅시다.
[code]
package flex.member;
public class MemberVo {
String id;
String password;
String name;
int age;
String sex;
String tel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
[/code]
위와 같은 bean을 만듭시다.
그리고 DB와 연동하는 놈인 MemberService라는 클래스를 만들어봅시다.
[code]
package flex.member;
import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import flex.member.MemberVo;
public class MemberService {
public List<MemberVo> getElements() throws SQLException {
long startTime = System.currentTimeMillis();
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
}
Connection con = null;
List<MemberVo> list = new ArrayList<MemberVo>();
String sql = "SELECT * FROM Member_List";
try {
String url = "jdbc:mysql://MYSQL디비주소/db이름";
con = DriverManager.getConnection(url, "db계정id", "db계정비밀번호");
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
MemberVo mb = new MemberVo();
mb.setId(rs.getString("Id"));
mb.setPassword(rs.getString("Password"));
mb.setName(rs.getString("Name"));
mb.setAge(rs.getInt("Age"));
mb.setSex(rs.getString("Sex"));
mb.setTel(rs.getString("Tel"));
list.add(mb);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (Exception ignored) {
}
}
System.out.println("Service execution time: "
+ (System.currentTimeMillis() - startTime));
return list;
}
}
[/code]
다 만들었으면 config를 수정해야해요.
blazeds프로젝트아래 WebContent/WEB-INF/flex/remoting-config.xml를 열어봅시다. service태그 안에 추가합시다.
[code]
<destination id="member">
<properties>
<source>flex.member.MemberService</source>
</properties>
</destination>
[/code]
이제 다 완성되었어요. export를 해야죠. Overwrite existing file에 체크를 하고, 톰캣디렉토리/webapp/blazeds.war를 선택합니다.
Finish를 클릭하고 톰캣을 가동시켜줍시다.
이제 Flex Builder로 갑시다. 여기서 이제 저 MemberService클래스에 있는 getElements()메소드를 불러올꺼에요.
New Project에서 Flex Project를 선택합니다.
Project name은 BlazedsTest라고 하고 Web application선택, Application server type은 J2EE로 선택하고 다음!
Server location에서 User default ~~~ 어쩌구 체크해제하구 blazeds로 설정합시다.
Root folder는 톰캣디렉토리/webapps/blazeds를 선택
Root URL은 http://localhost:8080/blazeds/
Context root는 blazeds
Validate Configuration클릭해서 제대로 되면 돼요(톰캣이 가동되어 있어야 돼요 ^^)
가볍게 Finish를 눌러줍시다 ^^
BlazedsTest.mxml에 이렇게 작성합시다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.remoting.RemoteObject;
import mx.controls.Alert;
private var startTime:Number;
private function resultHandler(event:ResultEvent):void{
dg.dataProvider = event.result;
}
private function faultHandler(event:FaultEvent):void{
mx.controls.Alert.show("실패 메세지 : " + event.fault.message);
}
private function retrieve():void {
var srv:mx.rpc.remoting.RemoteObject = new RemoteObject();
srv.destination = "member";
startTime = new Date().time;
srv.getElements();
srv.addEventListener("result",resultHandler);
srv.addEventListener("fault",faultHandler);
}
private function logResult():void {
if (startTime > 0) {
log.text = "" + (new Date().time - startTime) + " milliseconds";
}
}
]]>
</mx:Script>
<mx:Panel title="AS를 이용한 RemoteObject예" width="100%" height="100%">
<mx:DataGrid id="dg" width="100%" height="100%"
updateComplete="logResult()"/>
<mx:ControlBar>
<mx:Button label="데이터 가져오기" click="retrieve()"/>
<mx:Label id="log"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
[/code]
그런다음 실행하면 아래와 같은 창이 뜨고 Button클릭하면 끝입니다.
이렇게 하는게 맞나-_-; 아닌것같아요. 너무 복잡해요-_-; 더 쉬운방법이 있을것같은데...-_-;