레이블이 JAVA JAR 압축인 게시물을 표시합니다. 모든 게시물 표시
레이블이 JAVA JAR 압축인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 6일 화요일

(오라클자바커뮤니티, 자바교육, 오라클교육)Struts Exception Handler

ㅍException Handler

Action은 검사를 마친 예외들의 전부 혹은 일부를 ActionServlet으로 돌려 보내며 예외들을 처리하게 됩니다.

만약 ActionServlet이 예외를 처리 한다면 서블릿은 예외의 타입이나 상위 타입을 위한 Handler가 등록되었는지 검사 합니다.

ActionMapping 클래스의 지역 Exception Handler를 먼저 확인하고 그 다음 전역(global) 예외들을 검색 합니다.

ExceptionHandler는 exception 요소를 사용하여 다음과 같이 등록 합니다.

<exception
        type = “org.apache.struts.webapps.example.ExpiredPasswordException”
        key = “expired.password”
        path = “/changePWD.jsp” />

만약 ExpiredPasswordException이 발생 한다면 디폴트 핸들러는 특정 키와 특정 경로의 ActionForward를 사용하여 ActionError를 생성 합니다. 그러면 모듈안의 / changePWD.jsp로 포워드 됩니다.

이 순간 JSP는 메시지 리소스 번들로부터 expired.password라는 키에 해당 하는 메시지를 출력 할 것입니다. 만약 path 속성을 생략하게 되면 디폴트 핸들러는 ActionMapping의 input 속성을 이용 합니다.

ExceptionHandler 클래스는 반드시 org.apache.struts.action.ExceptionHandler의 하위 클래스이어야 합니다. 처음 실행되는 메소드는 execute() 메소드 입니다.

Action의 execute() 메소드처럼 작업이 끝나면 ActionForward를 반환하면 됩니다.

org.apache.struts.config.ExceptionConfig 빈은 struts-config.xml에서 exception 요소를 나타내며 특별한 프로퍼티 집합이 필요하면 ExceptionConfig의 서브 클래스를 만든 다음 <set-property> 요소를 사용하여 설정 파일로부터 속성을 초기화 하면 됩니다. 

2013년 8월 2일 금요일

JAVA BufferedReader/BufferedWriter – 예제

import java.io.*;
public class BufferedWriterSample {
public static void main(String[] args) throws Exception {
File imsiFile = File.createTempFile("imsi",".tmp");
imsiFile.deleteOnExit();
FileWriter fw = new FileWriter(imsiFile);
BufferedWriter bw = new BufferedWriter(fw);
for(int i=0; i<args.length; i++) {
bw.write(args[i]);
bw.newLine();    }
bw.close();
System.out.println(imsiFile+" 에 썼습니다...");
FileReader fr = new FileReader(imsiFile);
BufferedReader br = new BufferedReader(fr);
System.out.println(imsiFile+"에서 읽습니다...");
for(String readLine;(readLine=br.readLine())!=null;) {
System.out.println(readLine);
}
br.close();
}
}

2013년 8월 1일 목요일

자바의 OutputStream (JAVA OutputStream)

OutputStream 클래스는 모든 파일 시스템으로부터 스트림의 한 바이트를 쓴다. 
  public abstract void write(int b): 정수 b를 byte로 변환하여 출력한다.
  public void write(byte b[]): 배열 b의 모든 바이트를 쓴다.
  public void write(byte b[], int off, int len): b의 off 위치로부터 len만큼 쓴다. 
  public void close(): 출력 스트림을 닫는다.
  public void flush(): 버퍼에 남겨진 모든 데이터를 목적지에 보낸다.
  InputStream과 OutputStream은 추상 메소드를 포함하여 바이트들과 바이트 배열들을 읽고 쓰기 위하여 read()와 write()를 사용하는데 실제로 바이트 스트림을 읽고 쓰는 경우가 드물기 때문에 이 메소드는 거이 이용하지 않는다. 왜냐하면 자바에서 문자열은 바이트가 아니라 유니코드로서 일반적으로 숫자, 문자열, 객체형태로 입출력되기 때문이다. 


public class Iotest { //입력 문자열을 그대로 출력 
      public static void main(String []args) throws java.io.IOException {
            int i;
            while ((i=System.in.read())!=-1)
                System.out.write(i); // 정수 i를 문자로 바꾸어 출력한다.
      }
 }

java.util.HashSet 클래스 – 예제

import java.util.*; 
public class SetTest { 
 public static void main (String  args[]) { 
  String  names[] = {"홍명보", "안정환", "차두리","히딩크", "황선홍", "이운재", "설기현", "황선홍"}; 
  Set koreaTeam = new HashSet(); 
  int namesLen = names.length; 
  int index; 
  for (int i=0; i < 100; i++) { 
index =  (int)(Math.random()*namesLen); 
koreaTeam.add (names[index]); 
  } 
  Iterator it = koreaTeam.iterator(); 
  while (it.hasNext()) { 
    System.out.println (it.next()); 
  } 
 } } 

(JAVA OBJECT Serialize,Object Serializing)자바 객체직렬화

객체는 클래스를 통해 팔요한 시기에  생성되며 프로그램이 종료하지 않더라도  소멸된다. 물론 프로그램이 종료하면 사라진다. 실행시간에 유지하고 있던 객체 내부의 정보와 객체 자신의 정보를 어디엔가 기록해 놓고 나중에 필요한 시기에 다시 볼수 있는 방법을 제공하는것이 객체직렬화 이다.
 정보를 연속된 바이트 단위로 기록하는데 이를 객체 직렬화라고 한다.
 직렬화의 과정은 인스턴스 변수의 값을 저장하는 일인데 만약 인스턴스 변수가 다른 객체를 참조하고 있는 참조형의 변수일 경우 그 변수가 가리키는 객체 또한 직렬화 되어야 한다. 이렇게 직렬화는 복잡한 Tree형태로 계속 진행된다.
 (만약 참조형 변수가 가리키는 객체가 Serializable, Externalizable을 구현 하지 않았다면 직렬화가 되지 않으므로 이경우에는 readObject 메소드및 writeObject를 적절히 프로그램 내부에 기록해 줌으로서 제한적이지만 가능한 방법을 제시한다.)
 Static 필드, transient로 명시적으로 직렬화 하지 말라고 선언된 변수등은 직렬화 되지 않는다.
 직렬화를 담당하는 클래스는 java.io.ObjectInputStream, java.io.ObjectOutputStream
 적절히 writeObject, readObejct 메소드를 구현한다.

 객체를 생성한후 그 인스턴스를 a.dat 파일에 쓰는 경우
  FileOutputStream fos = new FileOutputStream(“”a.dat);
  ObjectOutputStream oos = new ObjectOutputStream(fos);
  oos.writeObject(“MyString…”);
  oos.writeObject(new Date());
  oos.flush(); 
 복구하는 방법
  FileInputStream fis = new FileInputStream(“”a.dat);
  ObjectInputStream ois = new ObjectInputStream(fis);
  String myString = (String)ois.readObejct();
  //return형이 Object이므로 타입캐스팅이 필요
  Date d = (Date)ois.readObject();


 
// MySerializationWrite.java
import java.io.*;
public class MySerializationWrite extends MySuperClass implements Serializable {
int i;
public MySerializationWrite(int i) {
this.i = i;
j=i*2;
}
          public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("imsi.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(new MySerializationWrite(2000));
oos.close();
System.out.println("객체 쓰기 완료...");
}
}
class MySuperClass implements Serializable {
int j;
}




객체직렬화(Object Serializing) –예제(복원하기)

import java.io.*;

public class MySerializationRead implements Serializable{
public static void main(String[] args) throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream("imsi.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
MySerializationWrite m = (MySerializationWrite)ois.readObject();
ois.close();

System.out.println("읽은후 MySerializationWrite(i) :" + m.i);
System.out.println("읽은후 MySerializationWrite(j) :" + m.j);
}
}

Java.lang.Object 클래스

자바의 모든 클래스는 Object 클래스의 하위 클래스이므로 Object 클래스의 모든 메소드를 사용할 수 있다. Object 클래스의 메소드는 클래스의 객체를 조작하기 위한 가장 기본적인 메소드만을 제공하는데 그 중 주요 메소드만을 소개하면 다음과 같다. 

public java.lang.Class getClass() 
  현재 객체의 원형 클래스에 대한 정보를 자바의 Class 타입으로 반환하는 메소드이다. 두개의 객체가 동일 클래스의 객체인지 비교할 때 유용하다. 

public boolean equals(Object obj)
  현재 객체가 다른 객체(obj)와 내용이 동일한지를 비교하는 메소드이다. 이 메소드는 객체의 내부 필드와 메소드의 구조가 완전히 동일하고 또 필드에 설정되어 있는 값도 동일한지를 비교한다. 

protected java.lang.Object clone() 
  객체를 완전히 복사할 때 사용하는 메소드이다. =의 경우는 참조하는 위치만 전달하지만 clone의 경우는 새로운 객체를 만들어 값까지 동일하게 복사한다. 

public java.lang.String toString() 
  객체를 문자열의 형태로 변환하는 데 사용하는 메소드이다. 보통 객체를 대표할 수 있는 값을 문자열로 반환한다. 
 
protected void finalize()
객체가 더이상 사용되지 않을 때 쓰레기 수집기에 의해 수행되는 메소드이다. 이 메소드는 객체가 사용한 파일이나 데이터베이스를 닫을 때 주로 사용된다. 

2013년 7월 28일 일요일

(오라클자바개발자실무교육,오엔제이프로그래밍실무교육센터)JAVA Jar 사용법

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)




Jar c|t|u|x[f][m][M][0][v] [jar파일의이름] [menifest] [-C directory] [files]
  Jar –I[jar]
  - 처음 Option의 첫번째 문자(기본적인 연산을 지정)
  c : 새로운 Jar Archive를 생성, 마지막인자로 입력파일등을 표시, 새롭게 생성된 JAR File 
      은 첫번째 엔트리로 META-INF/MENIFEST.MF 파일을 가지며 이파일은 JAR File의 
      내용을 나열하며 각각의 파일에 대한 메시지 요약을 포함한다.
  t : Jar Archive의 내용을 나열한다. 
  u : Jar Archive 파일의 내용을 갱신, 커맨드라인에 나열된 파일은 이 아카이브에 추가된다. 
      m 옵션과 같이 사용된 경우에는 지정된 메니페스트 정보를 Jar File 에 추가한다.
 x : JAR Archive의 내용을 추출한다.
 - 한정자 옵션(4개의 명령지정문 뒤에서 연산에 관한 자세한 정보를 제공)
 f: jar가  Command Line의 지정된 이름의 JAR File에 대해 수행되는 것임을 나타낸다. 
    지정되지 않으면 표준입력으로 JAR File을 읽고 표준출력으로 JAR File을 쓴다.
m : 메니페스트 템플릿이 코맨드라인에 지정되었음을 JAR 명령에게 알린다.,(c,u Option과
    함께사용)


M : jar가 기본 메니페스트 파일을 생성하지 않도록 함(c, u와 함께 사용)
v : 여러 가지 출력을 내보내도록 함
0 : jar가 압축 없이 파일을 JAR 아카이브에 저장 하도록 함 

첫번째 옵션이 f를 포함한다면 jar파일의 이름을 기술하며, m을 포함한다면 menifest파일이름을 기술한다. 만약 첫번째 Option이 f,m을 모두 포함한다면 이와 동일한 순서로 나열해야 한다. Files에는 JAR Archive에 포함시킬 파일을 나열한다.

** 추가옵션
-C Directory : Jar가 다음파일및 디렉토리를 처리하는중에 지정된 dir을 바꾸도록 한다. –C Option은 몇개라도 사용이 가능하며, 다음 –C Option이 올때까지 유효하다.
-I jarfile : c,t,u,x 대신 사용, Jar File의 파일구조등의 인덱스를 산출하도록, META-INF/INDEX.LIST 파일에 저장
 추후 자바인터프리터나 애플릿뷰어등이 알고리즘의 최적화하고 불필요한 Jar File을 다운로드 하지 않기 위해서 이 인덱스 정보를 이용활수 있다.



jar cvf hello.jar HelloWorld*.class
jar cf hello.jar HelloWorld*.class -> 위의 것과 동일하나 화면에 출력이 나타나지 않는다.
jar cmf myMenifest test.jar HelloWorld.class -> test.jar File을 만들면서 myMenifest 라는 파일의 내용을 MENIFEST.MF File에 첨가한다.
Jar ufm test.jar myMenifest -> 이미 만들어져 있는 test.jar File의 MENIFEST.MF File을 myMenifest 를 참조하여 갱신한다.
Jar umf myMenifest test.jar

D:\자바프로그래밍\예제>jar tvf hello.jar
    0 Fri Jun 28 19:07:24 KST 2002 META-INF/
    95 Wed Jul 03 00:08:38 KST 2002 META-INF/MANIFEST.MF
  430 Fri Jun 28 18:30:38 KST 2002 HelloWorld.class
D:\자바프로그래밍\예제>jar tf test.jar
META-INF/
META-INF/MANIFEST.MF
HelloWorld.class


D:\자바프로그래밍\예제>jar uf test.jar HelloWorld1.class

D:\자바프로그래밍\예제>jar uf test.jar HelloWorld2.class

D:\자바프로그래밍>jar cvf sample.jar -C 예제/  .  sample.jar file은 예제 dir에 생김

D:\자바프로그래밍\예제>jar tvf test.jar
    0 Fri Jun 28 19:07:24 KST 2002 META-INF/
    95 Wed Jul 03 00:08:38 KST 2002 META-INF/MANIFEST.MF
  430 Fri Jun 28 18:30:38 KST 2002 HelloWorld.class
  391 Fri Jun 28 17:35:00 KST 2002 HelloWorld1.class
  354 Fri Jun 28 17:35:00 KST 2002 HelloWorld2.class