### JSP 구성요소 ###

 

● 디렉티브

   - Page

   - Taglib

   - Includ

   - Import

   - Session

   - Buffer

   - autoFlush

   - errorPage

   - Info

   - pageEncoding  등 ...

● 스크립트

   - 표현식

      ex) <%= >

   - 스크립트릿

      ex) <%  자바코드 %>

   - 선언부

      ex) 자바 메소드(함수)/ <%! 자바함수 %>

● 기본객체

● 정적인 데이타

● 표준 액션 태그

      ex) <jsp:include> 

● 커스텀 태그 & 표준 태그 라이브러리(JSTL)

- StirngToKenizer 과 Split 의 차이점

 

### StringTokenizer ####

 

보통 문자열을 쪼개서 사용을 할때 많이 사용하는 것이 String Tokenizer 이다.

하지만, 조심해야 한다. 특정 구분자로 문자를 자를때 Null 값을 출력하지 못한다.

예를 들면,

String _str = "최우철|김진성||김성수";

StringTokenizer _tokens = new StringTokenizer(_str, "|");

for ( int i = 1; tokens.hasMoreElements(); i++ ) {

System.out.println("문자" + i + " = " + tokens.netToken() );

}

결과는

문자1 = 최우철

문자2 = 김진성

문자3 = 김성수

 

이렇게 나오게 된다. 즉 구분자("|") 로 따지면 Null 값이지만 값은 4개다.

하지만, 인식을 못한다.

만약에, DB 에 INSERT 한다면, 필드가 하나 빠지게 된다.

조심하자. 그래서 SDK 1.4 부터 나온 Split() 가 있다.

 

### Split ####

 

Stirng _str = "최우철|김진성||김성수";

String[] _values = _str.split("|");

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

System.out.println("문자" + (i+1) + " = " + _values[i] );

}

결과는

문자1 = 최우철

문자2 = 김진성

문자3 =

문자4 = 김성수


만약에, 맨 뒤에 값이 없을 경우에는 어떻게 처리할까?

String _str = "최우철|김진성|김성수||";

String[] _values = _str.split("|");

결과는

문자1 = 최우철

문자2 = 김진성

문자3 = 김성수

이렇게 나온다. 참고! split / StringTokenizer 두개 모두 이런경우에는 3개만 나온다.

하지만 마지막 데이타도 Null 값으로 출력을 하고 싶다면...

당연 split() 메서드다.

이클립스 split() 자동완성 API 를 보면 오보로딩 된 메서드로 2개가 있다.

1. split( String regex ) / 2. split( String regex, int limit )

2번 split( String regex, int limit ) 를 사용하면 limint int 만큼 배열의 Null 값 입력

문자열이 limit int 보다 크면 limit int 만큼만 출력하고 나머지는 버린다.

'공부 > JAVA' 카테고리의 다른 글

JAVA_[객체_직렬화]  (0) 2012.06.23
JAVA_[Adapter_패턴 (일명 : Wrapper 패턴)]  (0) 2012.06.23
JAVA_[Eclipse_SerialVersionUID]  (0) 2012.06.23
JAVA_[코딩_지침]  (0) 2012.06.21
JAVA_[텍스트파일읽기_예제]  (0) 2012.06.21

- 회사에서 '우편모아 시스템' 도로명 주소 검색시 INSERT 를 위해 GOOGLE 검색해서 만든 코드.

  1줄씩 읽어와서 처리. 특정 경로의 1개의 파일만 읽을시에는 File file = new File("경로/텍스트파일명")

  특정 폴더의 모든 텍스트 파일을 읽어 오려면 아래의 예제 처럼 사용하면 된다.

  사용하는 코드를 그대로 옮겨 놓은 것이므로 조금은 예제의 목적에 맞지 않지만 이해하자.

 

 

#### JAVA_텍스트파일읽기_예제 ####

 

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;

import com.srpost.salmon.lang.StringUtil;

public class ConversionMain {
   
    /* 새주소 텍스트 파일 postmoa insert 변환 */
    /* 텍스트 파일 구분자 */
    private final static String DELIM = "|";
    /* 변환할 도로명주소 텍스트파일 저장경로 */
    private final static String READ_TXT_PATH = "D:/DEV/PROJECTS/postmoa_juso_conversion/file/read/";
    /* 변환후 도로명주소 텍스트파일 저장경로 */
    private final static String CREATE_TXT_PATH = "D:/DEV/PROJECTS/postmoa_juso_conversion/file/create/";

    public static void main(String[] args) throws Exception {

        try {
            File file = new File(READ_TXT_PATH);
            File[] files = file.listFiles();

            /* READ_TXT_PATH 경로의 파일 수 체크 */
            int _fileLen = files.length;
            System.out.println(" [FileLength] :" + _fileLen);

            // FileReader fr = null;
            BufferedReader br = null;

            String read = null;

            for (int i = 0; i < files.length; i++) {
                String fileName = files[i].getName();
                String filePath = files[i].getPath();
                System.out.println(" [FileName] : " + fileName);
                System.out.println(" [FilePath] : " + filePath);

                // fr = new FileReader(filePath);
                File _encodingFile = new File(filePath);

                /* 인코딩 해서 BufferedReader */
                br = new BufferedReader(new BufferedReader(
                        new InputStreamReader(
                                new FileInputStream(_encodingFile), "UTF-8")));

                /* 변환 후 텍스트 파일 생성 */
                FileWriter out = new FileWriter(CREATE_TXT_PATH + "변환_" + fileName);

                while ((read = br.readLine()) != null) {

                   /* 회사 Salmon 프레임워크 코드 문자열 구분자("|") 잘라서 String[] 에 넣기 */
                    String[] _linez = StringUtil.fastSplit(read, DELIM);

                    String _lineStr = "";

                    _lineStr = _linez[19] + "|" + _linez[1] + "|" + _linez[2]
                            + "|" + _linez[3] + "|" + _linez[4] + "|"
                            + _linez[5] + "|" + _linez[6] + "|" + _linez[7]
                            + "|" + _linez[9] + "|" + _linez[11] + "|"
                            + _linez[12] + "|" + _linez[13] + "|" + _linez[14];
                    out.write(_lineStr + "\n");
                }
                out.close();
            }
            // if(fr!=null)fr.close();
            if (br != null)
                br.close();

            System.out.println(" [FileCreate_End !!!] ");
        } catch (Exception e) {
            System.out.println("Error :" + e.getMessage());
        }

    }// end - main
}// end - class

 

'공부 > JAVA' 카테고리의 다른 글

JAVA_[객체_직렬화]  (0) 2012.06.23
JAVA_[Adapter_패턴 (일명 : Wrapper 패턴)]  (0) 2012.06.23
JAVA_[Eclipse_SerialVersionUID]  (0) 2012.06.23
JAVA_[코딩_지침]  (0) 2012.06.21
JAVA_[StringTokenizer 과 Split 의 차이]  (0) 2012.06.21

+ Recent posts