'JAVA/sample JAVA'에 해당되는 글 30건

  1. 2007.12.07 [sample] 시간차 구하기 (지금시간기준)
  2. 2007.11.22 [sample] Action안에 thread 생성하기
  3. 2007.03.19 [sampe] addBatch Query일괄실행
  4. 2007.02.09 [sample] javascript 자신의 쿠키정보 파악하기 1
  5. 2007.02.09 [sample] junit setup 설정
  6. 2007.02.06 [sample] JDBC 연결 (tomcat / datasource)
  7. 2007.02.06 [sample] JDBC TEST
  8. 2007.02.06 [sample] 난수발생기
  9. 2007.02.05 [sample] System.arraycopy() 부분복사
  10. 2007.02.01 [sample] WEB 이벤트 기간 설정

시간차 구하기입니다.
지금 현재 시간을 기준으로 분단위로 얼마나 차이가 나는지를 알려주는 process 랍니다.

 public static int getDiffTime(String date) {

  SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_FULL_STR);

  Calendar cal = Calendar.getInstance(defaultTimeZone);
  try {
   cal.setTime(sdf.parse(date));
  } catch (ParseException e) {
   e.printStackTrace();
  }
 
  Date today = new Date();
  Calendar calToday = Calendar.getInstance(defaultTimeZone);  
  calToday.setTime(today);

  Calendar calInday = Calendar.getInstance(defaultTimeZone);
  calInday.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
    cal.get(Calendar.DATE),cal.get(Calendar.HOUR) , cal.get(Calendar.MINUTE));
 
  int count = 0;
   while (!calInday.after(calToday)) {
    count++;
    calInday.add(Calendar.MINUTE, 1);    }
  }
  return count;  
 }

Action안에서 thread만드는게 뭐 별거인가 싶지만 생서에 있어서 주의사항은
final 이라는점이다.
 

private void importProcess(final int  data) {
try {
 final Thread t = new Thread(new Runnable() {
  public void run() {
   try {
    threadExecute(data);
   } catch (Exception e) {
   }
  }
 });
 t.setName(threadName);
 t.setPriority(threadPriority);
 t.start();
} catch (Exception e) {}
}

private void threadExecute(int  data) throws Exception {
..
}

Query 한꺼번에 실행하는것 입니다.


  PoolManager pool = PoolManager.getInstance();
  Connection conn = null;
  PreparedStatement pstmt = null;
   
  try {
   conn = (Connection) pool.getConnection();  
   
pstmt = conn.prepareStatement("delete from neouserTable where name = ?");
   
   for (int i=0; i < daumid.length; i++) {  
    pstmt.setString (1, name[i]);
    pstmt.addBatch();
   }

 
   int results[] = pstmt.executeBatch();  
   returnValue ="true";
   
  } catch (BatchUpdateException e) {
      int rsSuccessCnts[] = e.getUpdateCounts();     //오류  발생 이전의 SQL 문에서 insert된 행 갯수를 배열로 리턴한다.
      for( int i=0; i<rsSuccessCnts.length; i++ ) {
       _logger.debug( i + "번째 쿼리 성공, 해당 쿼리에서 insert된 행 갯수: " + rsSuccessCnts[i] );
      }
      returnValue ="false";     
  } finally { PoolManager.close( pstmt, conn);}


사이트에 접속하신 후에 주소줄에 다음을 입력하시면 해당 페이지의 쿠키를 보실 수 있습니다.

javascript:alert(document.cookie)


간단해 보이지만 디버깅할때 가장 요긴하게 잘 사용하는 방법에 해당한다.


import junit.framework.TestCase;

public class ImsiBeanTest extends TestCase {

    public ImsiBean imsiBean = new imsiBean();
    // 본 test Case를 수행하시기 위해서는 MonthlyStatMgtBean 에 있는 conn =    
    connMgr.getConnection(); 을 주석처리 해야 합니다.
    public void setUp() throws Exception {
        String db_url = "jdbc:oracle:thin:@100.100.100.100:1521:SID";
        String db_user = "USER";
        String db_pwd = "PWD";
        imsiBean.initConnection(db_url ,db_user, db_pwd);
        System.out.println ("codeBean : " +imsiBean );
    }

     public void testInsertStarEvent () {
        System.out.println (" -------- testInsertStarEvent -----------");
         boolean returnBol = imsiBean.insertStarEvent(getimsiRec());
         System.out.println ("test 001 " + returnBol);
    }

     public void testSelectStarEvent () {
        System.out.println (" -------- testSelectStarEvent -----------");
        boolean returnBol = imsiBean.selectStarEvent("");
        System.out.println ("test 002 " + returnBol);
     }

     public imsiRec getimsiRec () {
        ImsiRec imsiRec = new ImsiRec();
        imsiRec.setCust_name ("고영민");
        return imsiRec;
    }
}



private Connection conn= null;

public Connection initConnection (String url, String id, String pwd) {
    try {
         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
         conn = DriverManager.getConnection(url, id, pwd);
     } catch (Exception e) {
         e.printStackTrace();
     }
     return conn;
}

● tomcat server.xml
--------------------------------------------------------------------
<Context path="/neouser" docBase="neouser"
debug="5" reloadable="false" crossContext="true">
<Resource name="jdbc/SampleDS" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/SampleDS">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<parameter>
<name>username</name>
<value>sample</value>
</parameter>
<parameter>
<name>password</name>
<value>samplepwd</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>

<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/sample</value>

 

● ConnectionManager.java
--------------------------------------------------------------------
import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ConnectionManager {
    protected static final Log logger = LogFactory.getLog(ConnectionManager.class);

    public static Connection getConnection() {
        try {
            Context ctx = new InitialContext();
            // Tomcat Server에서 DataSource를 Lookup
            DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/sampleDS");

            return ds.getConnection();
         } catch (NamingException e) {
              if (logger.isErrorEnabled()) {
                 logger.error(e.getMessage(), e);
             }
             throw new DBNotConnectedException(e.getMessage(), e);
         } catch (SQLException e) {
              if (logger.isErrorEnabled()) {
                 logger.error(e.getMessage(), e);
             }
             throw new DBNotConnectedException(e.getMessage(), e);
         }
     }
}


was의 사용이 이런것을 가능케 하죠.
이런류의 방법도 이제 고전이 되어버렸지만 그래도 유사방법을 만들어 내기기에는
가장 좋은것 같다.


 

package test.jdbc;

import java.sql.*;

public class DriverTest {
    public static void main(String args[]){
    //데이터베이스 접속 연결 정보를 가지고 있는 객체입니다.
    Connection con;

    try{
        //JDBC드라이버를 로딩합니다.
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

        //데이터베이스에 연결을 합니다. Oracle Server IP:Port:SID 계정명 패스워드
        con=DriverManager.getConnection   ("jdbc:oracle:thin:@127.0.0.1:1521:ora9","neouser","neouser");

        System.out.println("데이터 베이스 접속이 성공했습니다.");
    }catch(SQLException ex){
        System.out.println("SQLException:"+ex);
    }catch(Exception ex){
       System.out.println("Exception:"+ex.toString());
    }
  }
}


JDBC TEST입니다.
간단하지만 역시 찾으려들면 잘 안보이는 소스이죠 ^^


 

Random rd = new Random();
rd.nextInt(10);

10까지의 난수를발생시킨다.
이것 외에도

Math.random()* 10 도 방법이지만
이때의 경우 retrun이 double에 해당한다.



public class ArrayCopyMain {
  public static void main( String[] args ) {
    int[] source = new int[] { 5, 4, 6, 9, 7, 9 };
    int[] target = { 100, 200, 300, 400, 500, 600, 700 };

    // source의 2번째 첨자부터 4개를 target의 3번째 첨자부터 복사
    System.arraycopy( source, 2, target, 3, 4 );
    for ( int i = 0; i < target.length; i++ ) {
      System.out.println( "target[" + i + "]: " + target[i] );
    }
  }
}


// output
target[0]: 100
target[1]: 200
target[2]: 300
target[3]: 6
target[4]: 9
target[5]: 7
target[6]: 9

하나의 객체만을 가지고 저렇게 쉽게 복사할 수 있다. (로직한줄도 간과하면 안되요..)
DateHelper를 카렌더 객체를 이용한 벙법으로 변경 바람.

<%
     //시간 확인
    final String startTime = "2006091100";
    final String endTime = "2006101324";
    // 현재 시간

     long today = Long.parseLong( DateHelper.currentTime("yyyyMMddHH") );

     if(today < Long.parseLong(startTime) || today >= Long.parseLong(endTime) ) {
%>
<script language="JavaScript">
alert('이벤트 기간이 아닙니다.');
self.close();
</script>
<%
     return;
}

WEB상에서 이벤트 기간을 설정해 놓고 행사를 해야 하는경우
아주 종종 이벤트 시간을 넘겨서 행사에 참여하고 당첨 안되었다고 불만을 토로하는 분들이 많다.
이런것을 미연에 방지 하기 좋은것은!!
이벤트를 정확하게 그 시간에 종료시키는게 바람직 하다^^

1 2 3 

글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!