Posted
Filed under ORACLE

MYSQL  에서는 auto_increment
MSSQL 에서는 identity(1,1)
 
그럼 ORALCE 에서는 ?
SEQUENCE  라는게 있다.

SEQUENCE를 등록 해 주고
SEQUENCE 를 통해서 다음 증가할 값을 얻어서  테이블에 인자값으로 넣어 주면 된다.
간단히 예를 들어 보면....

CREATE TABLE MEMBER(id number , name varchar2(255));
MEMBER 테이블 생성 후

시퀀스 생성

create sequence SEQ_MEMBER_ID
    increment by 1  -- 1씩 증가
    start with 1        -- 시작값1
    nomaxvalue      -- 최대값 제한이 없다
    nocycle           
    nocache;

SEQ_MEMBER_ID라는 시퀀스가 생성되었다.

MEMBER table에 데이터를 입력 할 때
insert into MEMBER(SEQ_MEMBER_ID.nextval,"이름");
이런식으로 사용 하면 된다.


시퀀스를 삭제 할 경우
drop sequence SEQ_MEMBER_NO[시퀀스명]


기타 시퀀스에 대한 설명

자료참고 : http://www.oracleclub.com/



 

Unique Key를 생성하는 방법은 DBMS마다 차이가 있다.
MS-SQL은 IDENTITY를, MySQL은 auto_increment와 같이 쉽게 사용할 수 있는 방법이 있는데 오라클에서는 Sequence를 사용하여 다음과 같이 유사하게 구현할 수 있다


1. 자동증가컬럼을 사용하고자 하는 MYTABLE테이블을 생성한다.


        CREATE TABLE MYTABLE
                (ID NUMBER, NAME VARCHAR2(20));


2. CREATE SEQUENCE 라는 문장을 사용하여 SEQ_ID라는 이름의 시퀀스를 만든다.


        CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 10000;

       -- INCREMENT BY 1 : 증가값은 1
       -- START WITH 10000 :  10000부터 증가


3.  테이블에 데이터 입력시에는 NEXTVAL이라는 슈도 칼럼(Pseudo-column)을 이용하여 시퀸스를 사용한다.


        INSERT INTO MYTABLE VALUES( SEQ_ID.NEXTVAL, '홍길동');

       -- CURRVAL : 현재 값을 반환 합니다. .
        -- NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.

----------------------------------------------------------------------------------------------------------


* Sequence 구문


CREATE SEQUENCE sequence_name
        [START WITH n]
        [INCREMENT BY n]
        [MAXVALUE n | NOMAXVALUE]
        [MINVALUE n | NOMINVALUE]
        [CYCLE | NOCYCLE]


* START WITH
시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로 시퀀스번호가 증가 합니다.


* INCREMENT BY
시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다.
START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,..
이렇게 시퀀스  번호가 증가하게 됩니다.


* MAXVALUE n | NOMAXVALUE
MAXVALUE는 시퀀스가 증가할수 있는 최대값을 말합니다.
NOMAXVALUE는 시퀀스의 값을 무한대로 지정합니다.


* MINVALUE n  | NOMINVALUE
MINVALUE는 시퀀스의 최소값을 지정 합니다.
기본값은 1이며, NOMINVALUE를 지정할 경우 최소값은 무한대가 됩니다


[사용규칙]


 
 * NEXTVAL, CURRVAL을 사용할 수 있는 경우
    - subquery가 아닌 select문
    - insert문의 select절
    - insert문의 value절
    - update문의 set절


  * NEXTVAL, CURRVAL을 사용할 수 없는 경우
    - view의 select절
    - distinct 키워드가 있는 select문
    - group by, having, order by절이 있는 select문
    - select, delete, update의 subquery
    - create table, alter table 명령의 default값


[수정과 삭제]


ALTER SEQUENCE sequence_name
        [INCREMENT BY n]
        [MAXVALUE n | NOMAXVALUE]
        [MINVALUE n | NOMINVALUE]
        [CYCLE | NOCYCLE]


START WITH는 수정할수 없습니다.
START WITH 절이 없다는 점을 빼고는 CREATE SEQUENCE와 같습니다.


DROP SEQUENCE sequence_name


 

2010/01/10 13:16 2010/01/10 13:16
Posted
Filed under JSP, JAVA

이클립스가 설치 되어 있다는 전재 하에  진행 한다.

==> struct 2 다운받기
http://struts.apache.org/download.cgi?Preferred=http%3A%2F%2Fmirror.korea.ac.kr%2Fapache

2010. 01. 08 기준으로 struct 2 최신 버전 임.
 3번 째 struct-2.1.8.1-lib.zip 파일을 다운 받는다. 별 이유 없으며, 라이브러리 파일만
사용하기 위해서 선택 함 .
  • Release Notes
  • Full Distribution:
  • Example Applications:
  • Essential Dependencies Only:
  • Documentation:
  • Source:

  • 압축을 풀면 라이브러리 가 보이며, 다 필요 한 것은 아니다.
    struct에서 기본적으로 필요한 아래 일 들만 eclips에 include 하자.


     

     <--아래 파일 들을 압축 해 놓은 파일


    commons-fileupload-1.2.1.jar
    commons-io-1.3.2.jar
    freemarker-2.3.15.jar
    ognl-2.7.3.jar
    struts2-core-2.1.8.jar
    xwork-core-2.1.6.jar
    위의 파일들을 WebContent/WEB-INF/lib 에 복사를 한다.


    filter 등록(WebContent\WEB-INF/web.xml 파일 수정)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>jsp</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>

     <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     </filter>
     
     <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>*.action</url-pattern>
     </filter-mapping>

     <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/struts/*</url-pattern>
     </filter-mapping>

    </web-app>


    2.x 버전 부터 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    로 수정 되었음
    자세한 내용은
    http://cwiki.apache.org/S2WIKI/troubleshooting-guide-migrating-from-struts-20x-to-21x.html
    확인 할 수 있으며, 삽질 방지를 위해서 꼭 확인 해야 한다.

    sruts.xml , struts.properties생성
    파일은 Eclips 의 src 폴더에 생성 한다.

    사용자 삽입 이미지

























    struts.xml 내용

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> 
     
    <struts> 
        <package name="default" extends="struts-default" namespace="">
         <action name="main">
          <result>/index.jsp</result>
         </action>

        </package>
    </struts>  


    struts.properties내용

    truts.i18n.reload=true 
    struts.devMode = false 
    struts.configuration.xml.reload=true 
    struts.continuations.package = org.apache.struts2.showcase  
    struts.custom.i18n.resources=globalMessages 
    #struts.action.extension=jspa 
    struts.url.http.port = 8080 
    #struts.freemarker.manager.classname=customFreemarkerManager 
    struts.serve.static=true 
    struts.serve.static.browserCache=false 
    struts.multipart.maxSize=2097252



    *.src 폴더에 파일들을 생성 하면 컴파일 시
    WebContent/WEB-INF/classes  하위에 생성 된다.

    * 마지막으로 2.0 이전 버전과 최신 버전인 2.1.8에서 설정시 차의 점은
     필터가 변경 되었다느게 가장 중요 하다.. 꼭 릴리스 노트를 확인 해 봐야 한다.

    2010/01/08 20:15 2010/01/08 20:15
    Posted
    Filed under C#

    using System;
    using System.Windows.Forms;
    using System.Drawing;

    class TimerDemo:Form
    {
    Timer Clock;
    Label lbTime=new Label();

    public TimerDemo()
    {
    Clock=new Timer();
    Clock.Interval=1000;
    Clock.Start();
    Clock.Tick+=new EventHandler(Timer_Tick);

    this.Controls.Add(lbTime);
    lbTime.BackColor=Color.Black;
    lbTime.ForeColor=Color.Red;
    lbTime.Font=new Font("Times New Roman",15);
    lbTime.Text=GetTime();
    }

    public string GetTime()
    {
    string TimeInString="";
    int hour=DateTime.Now.Hour;
    int min=DateTime.Now.Minute;
    int sec=DateTime.Now.Second;

    TimeInString=(hour < 10)?"0" + hour.ToString() :hour.ToString();
    TimeInString+=":" + ((min<10)?"0" + min.ToString() :min.ToString());
    TimeInString+=":" + ((sec<10)?"0" + sec.ToString() :sec.ToString());
    return TimeInString;
    }

    public void Timer_Tick(object sender,EventArgs eArgs)
    {
    if(sender==Clock)
    {
    lbTime.Text=GetTime();
    }
    }

    public static void Main()
    {
    Application.Run(new TimerDemo());
    }
    }

    2010/01/08 14:22 2010/01/08 14:22
    Posted
    Filed under ORACLE

    오라클 (10G) 에서 스크립트 만들에서  sqlldr를 통해서 우편 번호 넣기

    먼저 테이블을 생성 한다.

    CREATE TABLE ZIPCODE (
     ZIPCODE VARCHAR2(7) NOT NULL,
     SIDO VARCHAR2(50) NOT NULL,
     GUGUN VARCHAR2(50) NOT NULL,
     DONG VARCHAR2(255) NULL,
     BUNJI VARCHAR2(255) NULL,
     SEQ VARCHAR2(6) NULL
    )

    태이블 생성후 스크립트 파일과 우편번호를 다운 받은 후 스크립트 파일을 수정 하자.

    스크립트 파일 과 우편 번호

    zipcode.csv

    zipcode.csv

    zipcode.csv.ctl

    zipcode.csv.ctl





    zipcode.csv.ctl  내용

    LOAD DATA INFILE 'd:\zipcode\zipcode.csv'
    REPLACE INTO TABLE zipcode
    FIELDS TERMINATED BY ','
    TRAILING NULLCOLS(ZIPCODE,SIDO,GUGUN, DONG,BUNJI,SEQ)

    여기서LOAD DATA INFILE 경로는 상황에 맞게 설정 해야 한다.


    스크립트 파일 설정을 한 후 콘솔에서 sqlldr 을 실행 시키기 위해서

    C:\oraclexe\app\oracle\product\10.2.0\server\BIN 이동 (CMD 실행시켜서 이동)
    버전에 따라서 설치 경로가 다를 수도 있으니., 윈도우 검색 기를 이용해서
    sqlldr.exe를 검색 하면 된다.


    [명령어]
    sqlldr "아이디/비밀번호"  control="ctrl 팔일 경로"

    명령어를 입력하면 다음과 같이 커밋 되고 있는 레코드 개수를 보여 준다 .

    사용자 삽입 이미지

    2010/01/08 10:01 2010/01/08 10:01
    Posted
    Filed under JSP, JAVA


    JDBC 연동 커넥터 파일을

    Eclips에 추가 한후


    DBControl dbcon = new DBCOntrol();
    테스트 해볼 수 있다.


    import java.sql.*;

    public class DBControl {
     private String DB_ID="DB_ID";
     private String DB_SID="SID";
     private String DB_PASS="DB_PASSWD";
     private String DB_ADDRESS="IP_ADDRESS";
     private Statement stmt;
     private Connection conn=null;
     private String error_message="";

     public DBControl(){
      try{
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(StringDBControl(),DB_ID,DB_PASS);
       stmt = conn.createStatement();
      }catch(Exception e){
       System.out.println(e.getMessage());
      }
     }
     
     private String StringDBControl(){
      String ConnectionString="jdbc:oracle:thin:@"+DB_ADDRESS+":1521:";
          ConnectionString+=DB_SID;
      return ConnectionString;
     }
     
     //for inser, delete, update
     public Boolean execute(String sql){
      Boolean _is=false;
      try{
       _is=stmt.execute(sql);
      }catch(SQLException e){
       error_message = e.getMessage();
      }
      return _is;
     }
     
     //for select
     public ResultSet executeQuery(String sql){
         ResultSet rs=null;
         try{
       rs = stmt.executeQuery(sql);
      }catch(SQLException e){
       error_message = e.getMessage();
      }
      return rs;
     }
     
     public String getErrorMessage(){
      return error_message;
     }
    }

    2010/01/07 20:28 2010/01/07 20:28
    Posted
    Filed under Action Script

    flash에서 사운드 객체 생성시

    ac 2.0 API

    The Sound class lets you control sound in a movie. You can add sounds to a movie clip from the library while the movie is playing and control those sounds. If you do not specify a target when you create a new Sound object, you can use the methods to control sound for the whole movie.

    You must use the constructor new Sound to create a Sound object before calling the methods of the Sound class.

    Availability: ActionScript 1.0; Flash Player


    Constructor summary

    Signature

    Description

    Sound([target:Object])

    Creates a new Sound object for a specified movie clip.




    api 에서 설명 한것 처럼 Sound Object를 생성 할 때 target<-- MovieClip 을 지정 하지 않으면,
    전체 무비를 위한 사운드 제어 메소드를 사용 할 수 있다 ...
    즉... loadmove를 통해서 불러 들여진 외부 swf에서  사운드 객체 생성시  target을 자기 자신으로 지정 하지 않는다면,,  root에 포함 되어 있는 사운드 객체를 참조 하겠다는 의미가 된다..

    Sound  객체 생성시 반드시 target Object를 지정 한다.

    var snd:Sound  = new Sound(this);

    2010/01/07 19:43 2010/01/07 19:43
    Posted
    Filed under JSP, JAVA
    Class SimpleDateFormat
    [api]http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
    java.lang.Object
    extended byjava.text.Format extended byjava.text.DateFormat extended byjava.text.SimpleDateFormat
    //오라클에 날짜를 입력 하기 위해서
    년월일,년월일시분초 형태로 varchar2 형 날짜 형태를 얻기 위해서 만든 util클레스.
    아래 표는 api에 있는 것이며, 다른 형태로 가공 하여 사용 할 수있다.
    Letter Date or Time Component Presentation Examples
    G Era designator Text AD
    y Year Year 1996; 96
    M Month in year Month July; Jul; 07
    w Week in year Number 27
    W Week in month Number 2
    D Day in year Number 189
    d Day in month Number 10
    F Day of week in month Number 2
    E Day in week Text Tuesday; Tue
    a Am/pm marker Text PM
    H Hour in day (0-23) Number 0
    k Hour in day (1-24) Number 24
    K Hour in am/pm (0-11) Number 0
    h Hour in am/pm (1-12) Number 12
    m Minute in hour Number 30
    s Second in minute Number 55
    S Millisecond Number 978
    z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
    Z Time zone RFC 822 time zone -0800



    package LMS.UTIL.TIME;
    import java.util.Date;
    import java.text.*;

    public class DATETIME {
     public static Date now = new Date();
     public static SimpleDateFormat sdf;
     
     //return type : 20100101
     public static String getDate_YYMMDD(){
      sdf = new SimpleDateFormat("yyyyMMdd");
      return sdf.format(sdf);
     }
     
     //return type : 201001011820
     public static String getDate_YYMMDDHHMMSS(){
      sdf = new SimpleDateFormat("yyyyMMddHHmmss");
      return sdf.format(sdf);
     }
    }
    2010/01/05 10:46 2010/01/05 10:46
    Posted
    Filed under JSP, JAVA
    [출처]: http://ghostsai.tistory.com/14
    이클립스 3.5.1(GALILEO) + TOMCAT 6 연동

    1. 이클립스 및 플러그인 받기

    이클립스 득탬 주소 : http://www.eclipse.org/downloads
    이클립스용 톰캣 플러그인 득탬 주소 : http://www.eclipsetotale.com/tomcatPlugin.html

    Eclipse IDE for Java EE Developers 에는 기본적으로 톰캣 연동 플러그인이 존재 하지만
    잘쓰면 편하지만 불편한점도 없지 않아 사용 하기 편한 다른 플러그인을 사용 하겠습니다.




    2. 이클립스 압축 풀기

    이클립스를 다운 받게 되면 패키지가 압축 되어져 있습니다.
    해당 파일을 압축 해제하시면 바로 사용 하실수 있습니다.




    3. 이클립스용 톰캣 연동 플러그인 받기 및 압축 해제

    이클립스와 마찬가지로 사이트에 방문 하셔서 해당 이클립스에 맞는 연동 플러그인을 받으시면 됩니다.


    해당 사이트에 방문하시면 마지막으로 올라온 패키지를 받으시면 됩니다.
    원래는 이 모듈은 이클립스 버전 3.2.1 에 맞춰져 나왔으나 3.2.1 이후 버전에는 다 먹히 더라구요. ^^


    해당 파일을 받으시구요... 받아 보시면 아래와 같은 파일명을 가지고 있습니다.
    이것도 압축 해제해 주세요...



    압축 해제 하시면 두개의 폴더가 생깁니다.
    이제 부터 이클립스 셋팅을 해보겠습니다.



    4. 이클립스 플러그인 추가

    앞축 해제 하셨으면 본격적으로 플러그인을 삽입해 보겠습니다.
    이클립스 압축 해제한 폴더에 보시면 "eclipse" 라는 폴더가 있습니다.
    해당 폴더를 잘라내기 하셔서 C: 나 D: 에 적당한 곳에 붙여 넣기 하세요.
    이클립스는 패키지를 설치 하지 않고 그냥 사용 할수 있습니다.
    "eclipse" 폴더에는 아래와 같은 폴더들과 파일들이 있습니다.


    적당 한곳에 복사를 하셨으면 이제 플러그인을 넣어 보겠습니다.
    톰캣 연동 플러그인을 압축 해제 하시면 생기는 "com.sysdeo.eclipse.tomcat_3.2.1" 디렉토리를
    그대로 "eclipse\plugin" 에 복사해 넣어 주세요.


    이렇게 해 주시면 절반 이상이 끝났습니다.





    5. 이클립스 시작
    복사가 다끝나셨으면 이클립스를 실행해 봅시다...
    "eclipse.exe" 를 실행 하시면 되겠죠... ^^


    실행 하시면 뒤와 같은 로고가 뜨면서 이클립스를 실행 하게 됩니다.
    프로그램 창이 뜨기 전에 workspace 를 지정 하는 팝업창이 뜨는데요.
    기본적인 이클립스의 작업 공간을 지정 하는 것입니다.
    어차피 새로운 디렉토리를 생성하여 프로젝트를 불리 할것이기 때문에 그냥 디폴트로 설정 해주시고.
    시작할때 다시 창이 뜨지 않도록 하기위해 체크박스를 체크해주시고 OK 눌러주세요.


    이작업이 끝나시면 아래와 같은 창이 뜹니다.
    웰컴페이지이기 때문에 그냥 "Welcome" 탭을 닫아 주세요..


    톰캣 플러그인이 제대로 복사가 되었다면 아래와 같은 아이콘 세개가 나와야 합니다.
    나타나지 않는다면 플러그인 폴더가 정확히 복사 되어 있는지 확인 해주시기 바랍니다.






    6. 톰캣 연동 설정

    플러그인이 설치 완료 된것을 확인 하셨으면 이제 연동 설정을 해 보도록 하죠..
     


    "Window > Preferences" 를 클립합니다.


    "Preferences" 창의 좌측 트리의 중간쯤 보시면 "Tomcat"이라는 탭이 있습니다.
    클릭 하셔서 위와 같이 해당 PC에 설치 되어져 있는 Tomcat의 버전과 디렉토리를 지정해 줍니다.
    Tomcat Version 과 Tomcat Home 을 지정해 주세요.
    저 같은 경우 톰캣 6.0이 설치 되어 있고 설치된 디렉토리가 C:\tomcat 6.0 에 되어 있어 위와 같이 설정 하였습니다.
    이렇게 하면 연동 설정은 끝났습니다.



    7. 연동 테스트(프로젝트 생성)

    연동이 잘되었는지 테스트 해보도록 하겠습니다.


    이클립스 창의 왼쪽에 있는 Project Explorer 에서 마우스 우클릭 하시면 위와 같이 실행해 주세요.


    "New" 창이 뜨시면 JAVA > Tomcat Project 를 클릭하시고 Next 클릭 합니다.


    Project name 을 입력 하시고 프로젝트의 모든 파일을 저장 할수 있는 폴더를 지정 해주세요.
    기본으로 처음에 설치 한 WorkSpace 의 결로가 지정 되어있으나 프로젝트가 중복되게 되면 오류가 발생 할수 있습니다.
    따라서 개별 프로젝트 별로 특정 폴더를 지정해 주시는것이 좋습니다.
    셋팅이 끝났으면 Next 클릭 합니다.


    이부분은 톰캣의 ConText 를 생성 하는 부분입니다.
    자동으로 생성 하기때문에 그냥 Finish 클릭 합니다.


    이 경고창은 이클립스의 작업 탭을 JAVA EE 에서 JAVA 로 변경 할것인가에 대한 내용입니다.
    이부분은 필요 없기때문에 다시 뜨지 않도록 체크 박스에 체크 해주시고 "No" 클릭해 주세요.






    8. 연동 테스트 (톰캣 실행 및 페이지 확인)

    이제 실행 해보도록 하죠..


    이클립스 상당 아이콘에서
    "Start Tomcat" 아이콘을 클릭합니다.


    정상 작동 하게 되면 위와 같이 콘솔창에서 정상 적으로 실행 되었다는 메세지가 나오게 됩니다.
    이제 테스트 하기 위해 페이지 하나 만들어 보겠습니다.


    JSP 파일을 생성해 보겠습니다.
    위와 같이 프로 젝트를 선택 하시고 "New > Other" 를 선택해 주세요.


    "Web > JSP" 를 선택 하시고  Next 클릭 합니다.


    File name 를 지정 하시고  Next 클릭 합니다.
    파일 이름은 굳이 .JSP 붙이지 않아도 자동 생성 됩니다.


    이부분은 JSP 템플릿 설정하는 부분인되요.. 기본으로 선택 하셔서 나중에 주정 하여 사용 하시면 됩니다.
    따라서 디폴트로 사용 하고 Finish 클릭 합니다.


    테스트 페이지 내용을 삽입 해주시고 웹브라우저를 열어 "http://localhost:8080/프로젝트명"을 입력해 줍니다.

    2009/12/28 14:55 2009/12/28 14:55
    Posted
    Filed under etc
    원문 : http://jowrney.tistory.com/category/%EC%97%B0%EA%B5%AC%EC%8B%A4
     
    포토샵 CS3를 쓰다보면, 간혹 한글 타이핑 중 갑자기 글꼴이 바뀌는 경험을 해 보았을 겁입니다.
    아래의 그림처럼 -ㅅ-;
    하지만, 해결책 있다는 거....



    단축키 "Ctrl + K" 눌러, 좌측에 Type을 선택하거나,
    "Edit > Preferences > Type" 를 선택하면 아래와 같은 대화상자가 뜹니다.

    Enable Missing Glyph Protection 부분을 체크 해제하시면 됩니다.

    2009/12/24 15:32 2009/12/24 15:32
    Posted
    Filed under Htm&Javascript
    [원문]:http://xroric.tistory.com/tag/JavaScript

    이 미션은 정말 힘들었던 것 같다..

    flash와 웹개발언어의 연동 자체는 그렇게 어렵지 않았으나..

    javascript와의 연동은 여러가지를 생각하고 적용하게 했다.

    무지했던 flash와 javascript의 연동

    첫번째시도.
    sendAndLoad를 통한 연동
    훌륭하게 실패! -> 엉뚱한 시도였다.

    두번째시도.
    getURL을 통한 javascript 함수 호출
    성공하는 듯 보이면서 훌륭하게 실패! -> 값 전달이 안되더라..;;

    세번째시도.
    setVariable을 통한 연동
    불안불안 하더니 실패! -> 리턴값이 너무 불안정 했다.

    네번째시도.
    ExternalInterface.addCallback을 통한 연동
    성공도 했고 잘 되는 듯 했으나 실패! -> 이눔은 javascript 함수가 없어도 true만 주더라..

    다섯번째시도.
    ExternalInterface.call을 통한 연동
    성공! 빠빠라밤~~

    이걸 하면서 느낀점은
    1. flash에서 데이터 형식은 아주 명확하게 정의하라.
    2. 값을 받는 타입에 대해 꼭 예외처리를 하라
      - null과 undefined는 엄연히 다르다. 그리고 null 이 리턴값으로 들어오면 이건 null로
        처리하면 안되고 꼭 문자열 "null"로 처리하라.
        그리고 undefined는 꼭 앞에 typeof를 써 데이터 타입 자체에 대해 예외 처리를 하라.


    import flash.external.*;

    var fromJavascriptVal:String = String(ExternalInterface.call("setJavascriptFunc", "parameter"));
    if(fromJavascriptVal == "null") {
     /*처리1*/
    }
    else if(typeof fromJavascriptVal == "undefined") {
     /*처리2*/
    }
    else {
     /*처리3*/
    }

    2009/12/24 13:16 2009/12/24 13:16