2014년 3월 25일 화요일

7. XplatForm 화면 조회[웹표준/웹접근성/HTML5/jQUERY교육잘하는곳/제이쿼리,JAVASCRIPT교육추천/jQUERY,CSS3학원추천/HTML5학원교육추천/JQUERY,HTML5교육학원추천/실무웹표준교육/웹퍼블리싱/웹접근성교육]

7. XplatForm 화면 조회[웹표준/웹접근성/HTML5/jQUERY교육잘하는곳/제이쿼리,JAVASCRIPT교육추천/jQUERY,CSS3학원추천/HTML5학원교육추천/JQUERY,HTML5교육학원추천/실무웹표준교육/웹퍼블리싱/웹접근성교육]

1. employees_select.jsp
- SQL query 수행 후 검색된 데이터를 Dataset에 할당하고 클라이언트로 전송

2. 첨부된 jsp를 Tomcat7.0 -> webapps - > ROOT - >edu(폴더만듬)  -> xp(폴더만듬)폴더 안에 복사한다.



3. editPlus와 같은 문서 편집기를 통해 jsp을 열어서 코드 분석해보자.
<%@ page import="org.apache.commons.logging.*" %>
<%@ page import="com.tobesoft.xplatform.data.*" %>
<%@ page import="com.tobesoft.xplatform.tx.*" %>
<%@ page import = "java.util.*" %>
<%@ page import = "java.sql.*" %>
<%@ page import = "java.io.*" %>
<%@ page contentType="text/xml; charset=UTF-8" %>
<%
// PlatformData
// - XplatFormData을 생성
// - 조회가 끝나고 dataset과 변수를 한번에 담는 데이타 덩어리
PlatformData o_xpData = new PlatformData();
 
int nErrorCode = 0;
String strErrorMsg = "START";
String sTest="111";
try {

 Connection conn = null;
 Statement  stmt = null;
 ResultSet  rs   = null;

 try {
  Class.forName("oracle.jdbc.driver.OracleDriver");
  // 개발자 환경에 맞게 변경해줘야됨.
    conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:EX", "study", "study");
   
  stmt = conn.createStatement();
  
 
  String SQL="select * from employees";
 
  rs = stmt.executeQuery(SQL);
  
 
  // xmplatform에 테이블 데이터를 담을 dataset 객체 생성
  DataSet ds = new DataSet("ds_employees");
  
   // 컬럼 생성
   // 컬럼 생성시 구성 (컬럼명, 컬럼타입, 컬럼사이즈)
   ds.addColumn("EMP_ID"   ,DataTypes.STRING  ,(short)10   );
   ds.addColumn("FULL_NAME" ,DataTypes.STRING  ,(short)50   );
   ds.addColumn("HIRE_DATE" ,DataTypes.STRING  ,(short)30   );
   ds.addColumn("MARRIED"   ,DataTypes.STRING  ,(short)1    );
   ds.addColumn("SALARY"    ,DataTypes.INT     ,(short)10   );
   ds.addColumn("GENDER"    ,DataTypes.STRING  ,(short)1    );
   ds.addColumn("DEPT_ID"   ,DataTypes.STRING  ,(short)10   );
   ds.addColumn("EMP_MEMO" ,DataTypes.STRING  ,(short)4000 );
     
   while(rs.next())
   {
  // 빈 레코드를 만듬.
    int row = ds.newRow();
 
  // 추가될 레코드 위치에 resultSet으로 불러오는 값들을 각각의 컴럼에 넣어 준다.
    ds.set(row ,"EMP_ID"    ,rs.getString("EMP_ID")   );
    ds.set(row ,"FULL_NAME"  ,rs.getString("FULL_NAME") );
    ds.set(row ,"HIRE_DATE"  ,rs.getString("HIRE_DATE") );
    ds.set(row ,"MARRIED"    ,rs.getString("MARRIED")   );
    ds.set(row ,"SALARY"     ,rs.getString("SALARY")    );
    ds.set(row ,"GENDER"     ,rs.getString("GENDER")    );
    ds.set(row ,"DEPT_ID"    ,rs.getString("DEPT_ID")   );
    ds.set(row ,"EMP_MEMO"  ,rs.getString("EMP_MEMO") );
   }
  
  // DataSet-->PlatformData에 담음
  o_xpData.addDataSet(ds);
 
  nErrorCode = 0;
  strErrorMsg = "SUCC";
 
 } catch (SQLException e) {
 
  nErrorCode = -1;
  strErrorMsg = e.getMessage();
 
 }


 if ( stmt != null ) try { stmt.close(); } catch (Exception e) {nErrorCode = -1; strErrorMsg = e.getMessage();}
 if ( conn != null ) try { conn.close(); } catch (Exception e) {nErrorCode = -1; strErrorMsg = e.getMessage();}
  
} catch (Throwable th) {
 nErrorCode = -1;
 strErrorMsg = th.getMessage();
}
// VariableList
// XplatFormData을 참조함
VariableList varList = o_xpData.getVariableList();
 
strErrorMsg=sTest;
 
//Variable--> VariableList
// 변수 리스트에 변수이름, value형태로 값을 담는다.
varList.add("ErrorCode", nErrorCode);
varList.add("ErrorMsg", strErrorMsg);
// HttpPlatformResponse
HttpPlatformResponse pRes = new HttpPlatformResponse(response, PlatformType.CONTENT_TYPE_XML, "UTF-8");
// xplatFormData를 담음
pRes.setData(o_xpData);
// Send data
// xplatFormData를 클라이언트 쪽으로 보냄
pRes.sendData();
%>
4. 조회버튼에 이벤트를 만들자.
버튼을 클릭하고 왼쪽 속성창에 번개모양아이콘을 클릭한다. 그리고 발생시킬 이벤트를 선택하고 의미있는 이름을 입력하고 엔터를 친다.



5. load()를 통해 서버와 연결해보자.
Dataset.load() 란?
-지정된 URL의 Dataset정보를 읽어 Dataset을 구성
  만약, 현재 Dataset이  다른 Dataset정보를 포함하고 있다면 이전의 Dataset정보는 Clear된다.
  그리고 하나의 Dataset을 조회할때 사용이 가능하다.
비동기 란?
-Transaction함수가 Service를 호출 후 통신 완료와 관계없이 다음 script를 수행하며 Result는 Call  Back함수에서
확인이 가능하다.
동기 란?
-Transaction함수가 Service를 호출 후 통신이 완료되는 시점까지 대기상태에서 Result를 받은면 다음 script를 실행함.
XplatForm은 default가 비동기이다.



6. 출력해보자.
조회버튼을 누르게 되면 DB에 있는 값들을 불러오는 것을 볼 수 있다.



7. 지금처럼 간단하게 프로그램을 작성할때는 상관없지만 기업용프로젝트라든지 코드양이 많으 프로젝트때는 ds_employees.url 부분에서  Full Server Name을 적게 되면 나중에 유지보수 하기가 힘들다. 그러기 때문에 자주 사용하는 url를 TypeDefintion에 저장해 두면 수정하기도 편하고 코드양도 줄어들 것이다.
"http://localhost:8080/edu/xp/"까지 복사를 한다.



왼쪽 Project Explorer에서 TypeDefinition를 더블클릭 한 후 Services탭으로 이동한다. 그리고 add버튼을 클릭 한 후 밑 화면과 동일하게 입력한 후 ok버튼을 누른다.



다시 script창으로 넘어와서 service에서 입력한 serviceID를 입력하고 ::을 하면 아까와 동일한 url이 만들어진다.



8. 5번글에서 XplatForm default는 비동기라고 했는데 한번 확인해 보자.
ds_employess dataset을 클릭한 후 우측 속성창에 이벤트 버튼을 클릭하게 되면 onload 이벤트가 있다. 의미있는 이름을 만든 후 엔터를 누르자.

비동기 방식은 load가 될때까지 기다리지 않고 그 다음 동작을 실행하게 된다. trace()를 통해서 한 번확인해 보자.


조회 버튼을 눌러서 확인해 본 결과 비동기 방식으로 출력이 되고 있는 것을 볼 수 있다.
1~2번째 입력을 지운이유는 더미dataset의 값을 불러왔기 때문에 우리가 보고자 하는 결과와 무관한 출력이다.
 



댓글 없음:

댓글 쓰기