IT

'소프트웨어/Java'에 해당되는 글 32건

  1. 2013.11.25 java 정규식 표현
  2. 2013.10.22 커스텀 Annotation
  3. 2013.09.26 마이바티스 익셉션 처리
  4. 2013.09.25 String, StringBuffer, StringBuilder 비교
  5. 2013.09.11 MD5, SHA-256 코드

 java.util.regex 패키지에 있는 Match 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할 수 있다.

 

boolean bln = Pattern.matches("^[a-zA-Z0-9]*$", this.input);

 


정규표현식은 다음과 같은 문법으로 되어 있다.

^ : 문자열의 시작을 나타냄.

$ : 문자열의 종료를 나타냄.

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄.


? : 앞 문자가 없거나 하나있음을 나타냄.

+ : 앞 문자가 하나 이상임을 나타냄.

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄.


 만약, .* 으로 정규식이 시작한다면 시작하는 문자열과 같은 문자열이 뒤에 없거나 많을 수도 있는 경우에만 일치를 시킨다. 즉, abc 일 경우 시작문자인 a를 기준으로 a가 없을경우와 a가 무한정 많은 경우에도 true를 반환하기 때문에 abc의 경우는 true를 반환한다.


[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내면 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다.


{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다.

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 a가 3번 이상 5번 이하 반복된 경우를 나타낸다.



\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자


 

기본적인 문자열 검증 정규식)

^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-힣]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만


 

정규식 표현 예제)

이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$


휴대폰 :  ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$


일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$


주민등록번호 : \d{6} \- [1-4]\d{6}


IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

'소프트웨어 > Java' 카테고리의 다른 글

Apache Commons Configuration을 이용해 설정정보 저장하기  (0) 2014.04.01
java:comp/env  (0) 2014.03.18
커스텀 Annotation  (0) 2013.10.22
마이바티스 익셉션 처리  (0) 2013.09.26
String, StringBuffer, StringBuilder 비교  (0) 2013.09.25
Posted by sinpk

[코드] 커스텀 Annotation 작성

 Maker.java - 커스텀 Annotation 작성 

1
2
3
4
5
6
7
8
9
import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME) //어노테이션 정보가 소스, 클래스, 실행시에 사용됨
public @interface Maker {
    int num();
    String name();
    String id();
    String date() default "2013-10-9";
}

 AnnTest.java - maker Annotation을 선언 및 적용된 Annotation을 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.lang.annotation.Annotation;




@Maker(id = "javaking", num = 1,name ="자바킹")
public class AnnTest {
    public static void main(String[] args) {
        
        for(Annotation a : AnnTest.class.getAnnotations()){
            System.out.println(" " + a);
        }
    }
}

 

 

RetentionPolicy.SOURCE : 컴파일러가 컴파일시 삭제하여 클래스 파일에 저장되지 않는다.

RetentionPolicy.CLASS : 클래스 파일에 저장되지만 자바 가상 머신은 무시한다.

RetentionPolicy.RUNTIME : 클래스 파일에 저장하고 자바 가상 머신이 읽는다.

'소프트웨어 > Java' 카테고리의 다른 글

java:comp/env  (0) 2014.03.18
java 정규식 표현  (0) 2013.11.25
마이바티스 익셉션 처리  (0) 2013.09.26
String, StringBuffer, StringBuilder 비교  (0) 2013.09.25
MD5, SHA-256 코드  (0) 2013.09.11
Posted by sinpk

                     } catch( PersistenceException pe ){                               

                                pe.printStackTrace();

                                logger.error(pe.getMessage(), pe);

                                resultMap.put("total", ""+targetList.size());

                                resultMap.put("successCount", ""+successCount);

                                resultMap.put("failCount", ""+failCount);

                                if(sqlSession != null) sqlSession.rollback();

 

'소프트웨어 > Java' 카테고리의 다른 글

java 정규식 표현  (0) 2013.11.25
커스텀 Annotation  (0) 2013.10.22
String, StringBuffer, StringBuilder 비교  (0) 2013.09.25
MD5, SHA-256 코드  (0) 2013.09.11
입력값 태그 변환  (0) 2013.08.23
Posted by sinpk

String, StringBuffer, StringBuilder 비교


● String: 짧은 문자열을 더할 경우 사용한다.
StringBuffer: 스레드에 안전하게(ThreadSafe) 설계되어 있으므로, 
                      여러 개의 스레드에서 하나의 StringBuffer 객체를 처리해도 전혀 문제가 되지 않는다.
                      스레드에 안전한 프로그램이 필요할 때나,

                      개발 중인 시스템의 부분이 스레드에 안전한지 모를 경우 사용하면 좋다.
StringBuilder: JDK 5.0에서 추가됨.

                       단일 스레드에서의 안전성만을 보장한다. 
                       스레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용하면 좋다.

 

★ 응답시간
String > StringBuffer > StringBuilder
★ 메모리
String > StringBuffer == StringBuilder

'소프트웨어 > Java' 카테고리의 다른 글

커스텀 Annotation  (0) 2013.10.22
마이바티스 익셉션 처리  (0) 2013.09.26
MD5, SHA-256 코드  (0) 2013.09.11
입력값 태그 변환  (0) 2013.08.23
Socket으로 이메일 전송(smtp)  (0) 2013.08.13
Posted by sinpk

// MD5

public String testMD5(String str){

String MD5 = ""; 

try{

MessageDigest md = MessageDigest.getInstance("MD5"); 

md.update(str.getBytes()); 

byte byteData[] = md.digest();

StringBuffer sb = new StringBuffer(); 

for(int i = 0 ; i < byteData.length ; i++){

sb.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1));

}

MD5 = sb.toString();

}catch(NoSuchAlgorithmException e){

e.printStackTrace(); 

MD5 = null; 

}

return MD5;

}

// SHA-256

public String testSHA256(String str){

String SHA = ""; 

try{

MessageDigest sh = MessageDigest.getInstance("SHA-256"); 

sh.update(str.getBytes()); 

byte byteData[] = sh.digest();

StringBuffer sb = new StringBuffer(); 

for(int i = 0 ; i < byteData.length ; i++){

sb.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1));

}

SHA = sb.toString();

}catch(NoSuchAlgorithmException e){

e.printStackTrace(); 

SHA = null; 

}

return SHA;

}


Posted by sinpk