Java & JavaBean
1. Component-based Development
1) Component?
-특별한 기능을 수행하기 위해 독립적으로 개발/보급되고,
-잘 정의된 인터페이스를 가지며,
-다른 컴포넌트들과 조립되어
-응용 프로그램에 활용할 수 있는 
-소프트웨어 단위(부품)이다.
2)지원특성
-식별 가능(Identifiable)
-추적 가능(Traceable)
-교체 가능(Replaceable)
-인터페이스를 통해 접근 가능(Accessible)
-독립적으로 개발/테스트/재사용 가능
-캡슐화(Encapsulated)
3)장점
-개발기간 단축
-개발비용감소
-생산성 증대
-리스크 감소
-일관성 확대
-최고 솔루션 제공
4)단점
-설계기간 연장
-개발자교육필요
5)JSP 에서 컴포넌트를 사용하면서 얻을 수 있는 장점
-프리젠테이션과 비즈니스 로직의 분리-역할분담
-컴포넌트 재사용을 통한 생산성 향상
-유지 보수의 용이

2. JavaBeans
1)개발스펙
-상속에 대한 제한 없다.
-반드시 클래스를 패키지해야 한다.
-필요에 따라 직렬화를 할 수 있다.
-필요에 따라 기본생성자를 생성할 수 있다.
-멤버변수를 property 라고 부른다.
-Bean 에서 사용할 property는 반드시 private 접근제한자를 가져야 한다.
-private 접근제한자를 갖고 있는 property에 접근/설정하기 위해서는 반드시 public 메소드를 사용해야 한다.
-public 메소드는 반드시 setXxx()/getXxx()의 형식을 취해야 한다.
-만일 property 의 데이타타입이 boolean 형이면 getXxx() 대신 isXxx() 메소드 타입을 취한다.
-추가적으로 필요한 메소드를 정의할 수 있다.

2)컴포넌트의 저장 위치
-WEB-INF\classes\

3. <jsp:useBean />
-JavaBean 객체를 생성하거나 이미 생성된 객체를 추출하는 태그
-객체의 디폴트 생성자만 호출
1) <jsp:useBean id="" class="package.class" scope="page|request|session|application" />
a. id
-Java 식별자 규칙 적용
-주어진 페이지에서 유일한 이름
-대소문자 구별
-문자로 시작
b. class
-사용하고자 하는 클래스이름을 전체이름으로 지정

4. <jsp:getProperty />
-JavaBean 객체의 property 값을 추출할 경우
-JavaBean 의 getXxx() 호출
1) <jsp:getProperty name="" property="" />
a. name
-useBean 의 id 와 동일한 이름사용

'Programming > JSP' 카테고리의 다른 글

JSP Custom Tag  (1) 2011.03.24
JSP DBCP 사용하기  (2) 2011.03.24
JSP Action Tag  (1) 2011.03.24
JSP 의 내장객체  (1) 2011.03.24
JSP 페이지 구성요소  (1) 2011.03.24
1. Action Tag?
- JSP 스펙에 의해 미리 구현과 정의가 된 태그
- prefix 가 jsp로 시작하고 xml 코딩규칙을 지켜야 한다.
- 반드시 대소문자 구별
- 종류
<jsp:include />
<jsp:forward />
<jsp:param />
<jsp:plug-in />
<jsp:useBean />
<jsp:setProperty />
<jsp:getProperty />

2. include Action Tag
1) RequestDispatcher의 include("/...")
2) pageContext 내장객체의 include(상대URL)
3) <%@ include file="" %>
4) <jsp:include page="" flush="false|true" />
-경로는 상대경로만 가능
5) include directive 와 include action tag 차이점 구별할 것

3. forward Action Tag
1) RequestDispatcher의 forward("/...")
2) pageContext 내장객체의 forward(상대URL)
3) <jsp:forward page="" />

4. param Action Tag
1) forward 하거나 include 하면서 파라미터를 전송할 때 사용
2) <jsp:param name="" value="" />



'Programming > JSP' 카테고리의 다른 글

JSP Custom Tag  (1) 2011.03.24
JSP DBCP 사용하기  (2) 2011.03.24
JavaBean  (2) 2011.03.24
JSP 의 내장객체  (1) 2011.03.24
JSP 페이지 구성요소  (1) 2011.03.24

1. MSSQL 같은 경우 driver를 직접 홈페이지에서 받아야 하지만, Oracle같은 경우는 설지할 때 설치경로의 jdbc 폴더 내에 압축파일로 저장되어있다. (ojdbc14.jar)

 1) JAVA에서 외부 프로그램의 드라이버를 저장하는 곳이 따로 있다. 바로,

 C:\Program Files\Java\jdk1.6.0_23\jre\lib\ext\ 아래에 복사하여 넣어둔다.

 2) 일반 사용자의 경우에는 

  C:\Program Files\Java\jre6\lib\ext\ 에 넣어둔다.


2. Eclipse 환경에서는 JDBC를 사용할 프로젝트만 Build Path 의 ADD external Archives에서 추가하면된다.



3. Eclipse 에서 Oracle Plug in 설치.

 1)http://quantum.sourceforge.net/    에서 플러그인을 다운

 2)com.quantum.feature_3.3.9_update_site_format.jar  의 압축을 푼다.

 3)그 폴더를 이클립스에서 help-Install new software... 에서 ADD한 후 local에 압축 푼 플러그인을 선택한다.

 4)프로그램을 재시작하여 Window-Perspective-Other.. 에 보면 Quantum DB를 선택할 수 있다. 

 5)이후 Database Bookmarks에 원하는 db를 추가하여 연결 할 수 있다. 드라이버는 oracle.jdbc.diver.OracleDriver를 선택.









ps-----------------------------------------------------------------------------


1) JDBC에서의 index는 Java에서 특별하게 1부터 시작한다.

'Programming > JAVA' 카테고리의 다른 글

이클립스 JSP plug in / 환경설정  (3) 2011.03.24
JDBC 문법  (2) 2011.03.24
JAVA IO  (1) 2011.03.24
JAVA Threads  (2) 2011.03.24
Java Call by value, Call by reference  (2) 2011.03.24

1. ASCII vs Unicode 

 1) xxx stream : 8비트

 2) xxx Reader, xxx Writer : 16비트 


2. Stream방식 vs RandomAccess 방식

 1) Stream : 파일을 순차적으로 나열하기 때문에 접근속도의 문자가있을 수 있다.

 2) RandomAccess : 파일을 랜덤하게 나열하고 키 로 접근할 수 있다.


3. File의 내용 vs Meta data

 1) 파일의 내용을 처리 할 것인가..

 2) 파일에 대한 정보를 처리 할 것인가..

----------------------------------------------------------------------------------------------

 

4. Stream

 1) Sesqence : 순차적이다

 2) Concurrency : 동시성이 없다.

 3) 동시성을 주기위해 Randeom Access 방식을 사용한다.


5. File~~stream : 모두 String 형태로 저장/로드 된다

 1) 파일 스트림에서 한글을 읽을때.

 FileInputStream fis = new FileInputStream(file);
  int readCount =0;
  byte[] buffer = new byte [1024]; // 한글을 읽어야 할 수 있기 때문에 바이트로 받는다. 배열의 크기는 OS 시스템에 맞게 1024정도를 준다. (한번에 1024바이트를 읽는다)
  while((readCount=fis.read(buffer))>=0){
   area.append(new String(buffer,0,readCount));
  }


6. Data~~stream : 데이터형이 유지된다 (int, double...)

 1) 데이터에서 한글을 읽을때

  DataOutputStream dos = null;
//  FileOutputStream fos = null;
  try{
  // fos = new FileOutputStream("D:\\data.dat");
   dos = new DataOutputStream(new FileOutputStream("D:\\data.dat")); //생성자 안에 생성자를 넣어 간소화 (하나만 close()할 수 있다)
   dos.writeBoolean(false);
   dos.writeInt(100);
   dos.writeDouble(89.0);
   dos.writeUTF("hello world");
   dos.writeUTF("안뇽하세염");  // 파일을 열어보면 글자가 깨져서 보이게된다.
  // dos.writeUTF("ㅋㅋㅋ");  //UTF를 지원하기때문에 한글은 UTF를 사용한다.
   System.out.println("파일 저장 완료~!");

 

7. InputStreamReader : 캐릭터형 문자를 바이트형으로 변환하여 받는다 (한글을 받을 수 있다)

 

 System.out.print("당신은 어떤 계절을 좋아하시나요?");
    BufferedReader br = null;
  String season = null;
  try{
   br = new BufferedReader(new InputStreamReader(System.in));  // 
   season =br.readLine();
   System.out.println(season);
   try{
    br.close();  //반드시 닫아야한다
    }catch(IOException ex){}
  }catch(IOException ex){
   
  }

 

8. RandomAccessFile : 파일을 동시에 읽으며 쓰는게 가능하지만 한글처리가 힘들다.

 1) long getFilePointer() : 파일의 위치를 가져온다.

 2) void seek(long pos) : 파일의 원하는 부위에 포인터를 가져다 놓을 수 있다.

 3) long length() : 파일의 길이를 가져온다. End of Point 를 알 수 있다.

 

 4) 한글과 영문을 변환 할 수 있도록 하는 메소드를 만든다.

 package StreamDemo;
import java.io.UnsupportedEncodingException;
public class CharacterConversion {
 public static String entoko(String en){
  String ko = null;
  try{
   ko = new String(en.getBytes("ISO8859_1"),"KSC5601"); //KSC5601 은 ANCI 형 이고, UTF-8은 바꿔 쓰면된다.
  }catch(UnsupportedEncodingException ex){
  }
  return ko;
 }
 public static String kotoen(String ko){
  String en = null;
  try{
   ko = new String(ko.getBytes("KSC5601"),"ISO8859_1");
  }catch(UnsupportedEncodingException ex){
  }
  return en;
 }
}

 

 

 

9. 문자를 파싱(Parsing)하는 3가지방법

 import java.util.Scanner;
// 문자 파싱하는 방법 3가지
public class ScannerDemo {
 public static void main(String[] args) {
  String line = "1101    조성모    45  78  23  100";
  //1. String class's split()
  String [] array = line.split("\\s+");
  //2. java.util.StringTokenizer 
  java.util.StringTokenizer st = new java.util.StringTokenizer(line);
  String [] array1 = new String[st.countTokens()];
  int i = 0;
  while(st.hasMoreElements()){
   array1[i++] = st.nextToken();
  }  
  //3. Scanner 쓰자.
  Scanner scan = new Scanner(line).useDelimiter("\\s+");
  while(scan.hasNext()){
   System.out.println(scan.next());
  }
  
 }
}

 

 

 

10. 직렬화 (Serializtion)

 1) 데이터를 Object형 째로 읽고 쓰는게 가능하다.

 2) 프리미티브 타입은 모두 직렬화가 가능하다. (모든 객체가 Serialization 가능한 것은 아니다.)

 3) Serializable 인터페이스를 상속받은 클래스만 가능하다. (Flag Interface) (String, Vector, ArrayList 등등...)

 4) transient private String author; 로 직렬화에 제외시킬 수 도 있다.

 5) Externalizable 인터페이스를 상속하여 직렬화 할 것만 선택 할 수도 있다.

 

 

11. JAVA NIO

 1) ByteBuffer

  - allocateDirect() : 직접 OS의 메모리에 접근 할 수 있는 입/출력 방식.

 

 

 

 

ps---------------------------------------------------------------

1. os별 파일과 경로 구분선 알아내는 방법

      System.getProperty("file.separator") // os에 종속적인 파일 구분선
      File.separator // os에 종속적이지 않은 구분선.
  

      System.getProperty("path.separator") // 경로 구분선
      File.pathSeparator

'Programming > JAVA' 카테고리의 다른 글

JDBC 문법  (2) 2011.03.24
JDBC 설정  (2) 2011.03.24
JAVA Threads  (2) 2011.03.24
Java Call by value, Call by reference  (2) 2011.03.24
The AWT Component Library  (1) 2011.03.24

+ Recent posts