'2009/06'에 해당되는 글 7건

  1. 2009.06.30 onsubmit 3
  2. 2009.06.26 StringBuffer 사용시 3
  3. 2009.06.25 JQUERY 동적객체 컨트롤 1
  4. 2009.06.25 LinkedHashMap
  5. 2009.06.01 pstmt.setTimestamp() 로 date형식 Insert 1
  6. 2009.06.01 jquery 에서 부모객체 참조; 2
  7. 2009.06.01 생성자 패턴 1

onsubmit

2009. 6. 30. 10:28 from JAVASCRIPT
<body onload="~">

window.onload = init;
이런식으로 쓰면서
<form onsubmit=""> 은 여태 그냥 놔뒀었네요.

$(document).ready( function() {
document.forms['aa'].onsubmit = checkValidation;
function checkValidation(){
  alert('곱게못넘김');
  return false;
}

위의 밑줄친 코드를 사용함으로써
form태그의 onsubmit을 제거할 수 있습니다.
Posted by 윤재현 :

StringBuffer 사용시

2009. 6. 26. 13:41 from JSP
buffer.append("list").append(i);
이걸 편의상
buffer.append("list"+i);
요런식으로 사용하는데
이러면 컴파일할때는

sb.append("list").append(i);
sb.append((new StringBuilder("list")).append(i).toString());

위와같이 컴파일됩니다.
불편해도 나눠서 쓰는게 좋을거 같아요


Posted by 윤재현 :

JQUERY 동적객체 컨트롤

2009. 6. 25. 16:33 from JAVASCRIPT
jquery는 셀렉터를 이용해 DOM에서 가져온 객체를 jquery내장함수를 이용해 다양하게 가공할 수 있다.
예를들어
<body>
  <div></div>
<script type="text/javascript">
//<![CDATA[
$(document).ready( function() {
  $('div').html('동적으로 추가된 innerHTML');
});
//]]>
</script>
</body>
※스크립트 태그는 head, 또는 body사이에만 넣을것!

위와같이 DOM을 읽어들여서 innerHTML을 수정할 수있다.
비슷한것 같지만 셀렉터로 읽어오지 않은
document.getElementsByTagName('div')[0] 에서는 html() 함수를 사용할 수 없다.
따라서
var d = document.createElement('div');
로 만들어진 div는 DOM Object가 될 수는 있지만 Jquery객체는 아니므로 Jquery에서 지원하는 내장함수들을 사용할 수 없다.

jquery의 동적이벤트 등록방식이 필요해서 위와같은 경우 처리법을 찾아봤는데 혹시나 하고
$(d).click(function(){alert();});
이렇게 써보니 Object를 Jquery객체로 인식했다. 해서
$(div).css('color','#f00').html('클릭이벤트 동적으로 등록').click(functionname).appendTo($('body'));
하게되면 onclick태그가 없이도 해당객체에 이벤트를 등록할 수 있다.
click이벤트가 아닐경우는 Jquery객체.bind('mouseover', function); 등의 형식으로 사용가능하다

그런데 $(document.createElement('div')).click(function(){alert();});
이렇게 하면 한줄이네.
Posted by 윤재현 :

LinkedHashMap

2009. 6. 25. 11:35 from JSP
이거 다 아는거겠지만 또 자세히 물어보면 모르는사람도 많고 하니 20일만에 게시물 업데이트좀 합니다.

아주 가~끔 개발할때
벡터에 꼴랑 키와 값을 담아서 꺼내야 할 경우가 있습니다.

Vector v = new Vector();
String[] arr = null;
for( int i = 0; i < 10; i++ ){
  arr = new String[2];
  arr[0] = "key";
  arr[1] = "value";
  v.add(arr);
}
String[] result = (String[])v.get(0);
System.out.println(result[0]);

이렇게 사용하겠죠
사실 그냥 맵에서 키, 값 쭉~ 찍으면 되는데 찍어보시면 알겠지만 순서가 뒤죽박죽 입니다. List형과 Map형은 그 특성이 달라서 원래 순서를 기억하기 위해서는 리스트를 쓰는게 맞긴합니다.
하지만 LinkedHashMap은 Map중에서 특이하게 순서를 기억합니다.


해서 아래와 같은코드에 생성자를 LinkedHashMap을 사용하면 입력된 순서대로 출력되고
HashMap 이나 HashTable, HashSet 이런거 쓰면 뒤죽박죽으로 나옵니다.

    LinkedHashMap m = new LinkedHashMap();
//    HashMap m = new HashMap();
    for( int i = 0; i < 10; i++ ){
      m.put( String.valueOf(i), String.valueOf(i) );
    }
    Iterator i = m.keySet().iterator();
    String temp;
    while(i.hasNext()){
      temp = String.valueOf(i.next());
      System.out.println(m.get(temp));
    }

물론 LinkedHashMap은 리스트처럼 순서를 저장하므로 성능은 다른 맵에 비해서 떨어질 수 있습니다.
얼마 차이는 안나요.
Posted by 윤재현 :


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //date포맷 생성

query = " INSERT INTO TBLTIME ( TIMETEST ) VALUES ( ? ) ";
pstmt = conn.prepareStatement(query);
pstmt.setTimestamp(1 , new Timestamp( sdf.parse("2009-06-01 19:02:33").getTime() )); //TimeStamp 생성 & set
pstmt.executeUpdate();

ORACLE, MSSQL, MYSQL 확인완료;
DB마다 상이한 내장함수를 사용할 필요가 없음;
(ex. TO_DATE() )


psmt.setDate()는 날짜까지만 입력이 되는데... 
원래그런건지... 그이유는..잘.; 
Posted by 알 수 없는 사용자 :

1. parent일경우

var $ = window.parent.$;

$("#name").val("우왕ㅋ굳ㅋ");

alert($("#name").val());

 

결과는 부모도큐먼트의 name객체의 value를 반환

"우왕ㅋ굳ㅋ"

출력

  

2. opener일 경우

$("#name", opener.document ).val("우왕ㅋ굳ㅋ");

alert($("#name").val());

 

opener, parent 일경우가 서로 다르다...

왜그럴까??;;

 

Posted by 알 수 없는 사용자 :

생성자 패턴

2009. 6. 1. 11:56 from JSP
텔레스코핑(telescoping) 생성자
public class Test {
  private final int servingSize;
  private final int servings;
  private final int calories;

  public Test( int servingSize, int servings ){
    this( servingSize, servings, 0 );
  }

  public Test( int servingSize, int servings, int calories ){
    this.servingSize = servingSize;
    this.servings = servings;
    this.calories = calories;
  }
}
매개변수값이 작을 경우에는 유용하지만 길어지면 파라메터의 용도파악이 어려움

자바빈즈패턴
public class Test {
  private int servingSize = -1;
  private int servings = 0;
  private int calories = 0;
  public Test( ){}
 
  public void setServingSize( int val ){
    servingSize = val;
  }
  public void setServings( int val ){
    servings = val;
  }
  public void setCalories( int val ){
    calories = val;
  }
}
객체 생성후 여러번의 setter 메소드를 호출하여 파라메터를 전달해야만 사용가능한 인스턴스를 생성할 수 있고 불변 클래스생성이 불가능;;

빌더패턴
public class Test {
  private final int servingSize;
  private final int servings;
  private final int calories;
 
  public static class Builder {
    private final int servingSize;
    private final int servings = 0;
    private final int calories = 0;
   
    public Builder( int val ){
      this.servingSize = val;
    }
    public Builder servings( int val ){
      this.servings = val;
      return this;
    }
    public Builder calories( int val ){
      this.calories = val;
      return this;
    }
    public Test build(){
      return new Test(this);
    }
  }
  private Test(Builder builder){
    servingSize = builder.servingSize;
    servings = builder.servings;
    calories = builder.calories;
  }
}
사용법::
Test a = new Test.Builder(1).servings(1).calories(1).build();

생성자에 많은 매개변수가 필요할 경우 유용함
Posted by 윤재현 :