2008/07 95

객체 스트림 - 소개(마샬링, 언마샬링)

객체 스트림 객체스트림이란 객체를 아주 쉽게 전송할 수 있는 방법을 말한다. 객체가 전송된다는 의미는 객체가 내부적으로 참조하는 개체들 역시 함께 전송되는 것을 뜻한다. 객체가 전송되거나 쓴다고 하면, 보통 데이터만 해당된다고 생각할 수 있다. 객체가 전송된다는 것은 애플릿(Applet), 윈도우 등도 전송될 수 있다는 것을 의미한다. 객체를 전송하려면 다음과 같은 순서를 거쳐야 한다. 1. 데이터를 특정 통신 채널로 보낼 수 있는 형태로 바꾼다. 이를 마샬링(marshaling)이라고 한다. 2. 변환된 데이터를 전송하거나 쓴다. 3. 변환된 데이터를 읽어 들여 원래의 형태로 변환한다. 이를 언마샬링(unmarshaling)이라고 한다. 마샬링 마샬링이란 데이터를 바이트의 흐름으로 만들어 TCP와 같은..

객체 스트림 - 생각해볼 문제와 간단한 예제(Vector를 이용한 파일 저장, 읽기)

객체 스트림의 간단한 예제 Vector v = new Vector(); Vector v1 = new Vector(); Vector v2 = new Vector(); Vector v3 = new Vector(); v1.addElement(new String("data 1")); v1.addElement(new String("data 2")); v1.addElement(new String("data 3")); v2.addElement(new String("data 4")); v3.addElement(v2); v.addElement(v1); v.addElement(v3); Vector 네 개가 선언된 후, 각각의 Vector 안에 String과 Vector를 추가한다. 그림으로 표현하면 다음과 같다. 메모리에..

XML과 DOM(성적조회), SAX

개인별 성적 조회 프로그램(DOM) 첨부파일 자바스크립트를 이용해 xml파일을 읽어 HTML의 FORM에 출력하는 예제이다. SAX SAX(Simple API for XML)의 정의 SAX는 이벤트 기반 API(Application Programming Interface)이며, 주로 문서를 조작하는 프로그램을 개발할 때 사용한다. SAX는 DOM과 마찬가지로 XML 문서의 생성, 삭제, 수정, 태그 변환 등 다양한 목적으로 개발할 수 있으며, XML 문서 편집기, XML 문서 뷰어, 문서 변환기 등을 다양하게 개발할 수 있다. DOM은 문서 전체를 메모리에 읽어 들이고 조작하는 방식이며, SAX는 문서를 처음부터 차례로 읽어가면서 처리하는 방식이다. 그래서 DOM을 '트리 기반 API'라고 부르고, SA..

패턴, 자바빈즈, 프레임웍(IoC, MVC, XML 역할)

패턴, 자바빈즈, 프레임웍 디자인 패턴 디자인 패턴이란 프로그래밍에서 발생하는 여러 가지 문제 영역에 대한 해결 방법들을 모아서 정리해놓은 것이다. GoF(Gang of Four)가 여러 가지 패턴들을 모아 "디자인 패턴"이라는 책을 내면서부터 디자인 패턴이라는 용어가 일반화되기 시작했다. GoF의 디자인 패턴 중 하나를 예로 들면 데코레이터(Decorator)라는 패턴이 있다. 래퍼(Wrapper)라는 말로도 쓰이는데 이것은 어떤 객체에 기본적인 동작은 유지하면서 부가적인 기능을 넣고 싶을 때 사용한다. JDBC에서 수행한 쿼리를 로그로 남기고 싶을 때 데코레이터 패턴을 사용하는 예제이다. public class LoggableStatement implements Statement { private S..

MVC 패턴

MVC 패턴 조회 버튼을 눌러 DB에 있는 값을 읽어 오려면, 조회를 누르면 selectDB()에 있는 메소드를 호출하여 결과를 받으려면, public MemberVO selectDB(){ … return MemberVO; } SELECT한 결과가 1건일때 mVO에 넣으면 된다. 그러나, 1건 이상 여런 건일때는 컬렉션을 이용한다. public List/ArrayList/컬렉션 프레임워크에있는 어떠한 오브젝트도 올수 있다. selectDB(){ /* LIst는 인터페이스(추상메서드)이다. List를 구현하기 위해서 new를 해서 생성할 수 없다. (List list = new List (X)) List를 구현하기 위해서는 자식 클래스를 사용하면 된다. (List list = new ArrayList(O)..

XML과 DOM(도서 목록), JAVA 환경변수 설정, BAT파일 생성하기

XML과 DOM 첨부파일 XML 문서를 검색하고, 수정, 저장할 수 있는 XML 문서 도서 목록 뷰어 프로그램 개발 예제이다. JAVA 환경변수 설정 변수 : PATH 값 : C:\Java\bin; (자바 설치 경로의 bin폴더를 지정한다) 변수 : CLASSPATH 값 : .; (java가 있는 파일에 클래스를 생성하기 위해 점(.)을 지정한다. 현재 경로를 의미) ※ 기존에 jre 경로는 모두 지워준다. BAT파일 생성하기 BookList.bat 파일로 실행하면 된다.

객체 스트림

객체 스트림 객체스트림은 객체를 전송시킬 수 있는 방법을 제공한다. 객체 안에 저장된 내용을 파일로 저장하거나 네트워크로 전송하려면 많은 노력이 필요하다. 객체에 있는 필드의 내용을 일일이 읽어 들여 하나씩 저장하거나 전송을 해야 하기 때문이다. 그리고 네트워크 프로그래밍 이라면 반대 쪽에서 전송한 데이터를 읽어 들이기 위해 전송한 순서대로 읽어 들여야 한다는 번거로움도 있다. 이런 문제를 쉽게 해결할 수 있게 해주는 것이 객체 스트림이다. 그렇지만 객체 스트림의 경우에는 마샬링(marshaling)과 언마샬링(unmarshaling)이라는 작업을 해야하므로 추가적인 과부하가 발생할 수 있다는 문제가 있다 하지만 요즘의 프로그래밍의 추세는 과부하보다는 조먿 손쉬움 프로그래밍 좀더 쉽게 유지보수 할 수 있..

문자 스트림 - StringReader와 StringWriter

StringReader와 StringWriter StringReader와 StringWriter 클래스는 각각 CharArrayReader, CharArrayWriter와 흡사한 클래스다. StringReader는 문자열로부터 읽어 들이기 위한 클래스고, StringWriter는 자신의 내부 저장 공간에 출력된 내용을 문자열로 반환 할 수 있는 기능을 가진 클래스다. StringReader 클래스 생성자 생성자 설명 StringReader(String s) String s로 부터 읽어 들이는 StringReader 객체를 생성한다. StringWriter 클래스 생성자 생성자 설명 StringWriter() 내부 저장 공간이 있는 StringWriter 객체를 생성한다. StringWriter 클래스의 ..

문자 스트림 - Char 배열 형태로 만든 후 출력하기(CharArrayReader, CharArrayWriter)

Char 배열 형태로 만든 후 이 내용을 화면에 출력하기 ByteArrayInputStream과 ByteArrayOutputStream을 학습할 때 다뤘던 예제와 흡사한 예제이다. 다른점은 바이트 배열이 아니라 char 배열을 사용했다. import java.io.*; public class CharArrayInputOutputTest { public static void main(String[] args) { if(args.length != 1){ System.out.println("사용법 : java CharArrayInputOutputTest 파일이름"); System.exit(0); } // if end FileReader fis = null; CharArrayReader bais = null; ..