'빈즈'에 해당되는 글 1건

  1. 2008.02.02 [자바/java/EJB/자바빈즈] 자바빈즈 개요.

[자바/java/EJB/자바빈즈] 자바빈즈 개요.


1. 빈즈란 ?

컴포넌트이다. 즉 부품이란 의미를 가지고 있다. 부품이란 만들어 놓으면 필요한 곳에 가져다가 제품을 완성시킬수 있듯이 프로그램도 부품 형태로 만들어 놓고 필요할 때 재 사용할 수 있게 한다.

빈즈 또한 자바 클래스이다. 따라서 빈즈를 만든다는 의미는 자바 프로그램을 만든다고 생각하면 된다.

2. 빈즈 만들기

1) 정보를 저장하는 멤버 변수는 모두 private로 선언한다.

2) setter를 구성한다.

setter란 멤버 변수에 값을 저장하기 위한 메소들을 의미하는데 메소드 이름은 setXxxx() 형태로 구성된다. 이때 Xxxx는 멤버 변수를 뜻하며 맴버변수의 첫글자는 대문자로 표시된다.

예를 들어 멤버 변수가

private String name=null;
 
과 같이 정의 되어 있을 때 name변수에 값을 저장하기 위한 setter는

public void setName(String name){ this.name = name; }

과 같이 정의 되어야 한다.

3) getter를 구성한다.

getter는 setter와 반대로 멤버 변수의 내용을 외부로 전달할 때 사용되는 메소드들을 뜻한다. 위의 멤버 변수 name값을 외부로 전달하기 위해서는 아래와 같이 getter를 작성한다.

public String getName(){ return name; }

4) setter와 getter의 접근자는 모두 public으로 선언한다.

3. bean의 간단한 전체 소스를 보자.

  1. package beans;
  2. public class MyBean
  3. {
  4.     private String irum;
  5.     public void setIrum(String n)
  6.     {
  7.         this.irum = n;
  8.     }
  9.     public String getIrum()
  10.     {
  11.         return irum;
  12.     }
  13. }

[설명]

1행 : 클래스 파일을 한곳으로 묶기위해 package 지정

5행 : 멤버 변수 선언.

7~10행 : setter 선언. 이 setter에 의해 외부의 값이 멤버변수 irum에 대입된다.

12~15행 : getter 선언. 멤버 변수 irum을 외부로 전달.

4. 빈즈의 컴파일

빈즈 파일을 컴파일 하기위해선 먼저 자바의 classpath, 컴파일 옵션 -d, package와 같은 명령어들의 상호 연관성에 대해 알아야 한다.

1) classpath

자바 sdk를 설치한후 path부분과 classpath부분의 시스템 변수를 추가하거나 수정한 일이 있다. 이때 classpath의 변수값에는 단지 "."만을 입력하였다. 즉 현재 디렉토리(폴더)를 의미하는 변수값 이였다.

2) 컴파일 옵션 -d

위의 빈즈파일을 컴파일 하기 위해서

javac -d . MyBean.java

로 컴파일 하는데 이때 사용되는 -d는 디렉토리를 의미하고 "." 은 classpath에서와 같이 현재 디렉토리를 의미한다. 종합해서 풀면, Mybean.java를 컴파일 하는데 소스에서 선언된 package 구조대로 컴파일하되 그 최상위 디렉토리는 현재 디렉토리를 기준으로 한다 라는 의미가 된다.

3) package beans

위의 소스 1행에 선언된 package는 디스크상의 디렉토리를 의미하기도 한다. 따라서 위의 소스가 정상적으로 컴파일되면 현재 디렉토리 하부에 beans 디렉토리가 만들어지고, 그 안에 컴파일된 클래스 파일이 존재하게 된다.

5. 톰캣에서 클래스파일의 위치

자바파일을 컴파일하면 클래스 파일이 생성되는데 이를 톰캣이 인식하도록 하려면 "[톰캣홈]/웹어플리케시션/WEB-INF/classes" 에 존재해야 한다. 따라서 컴파일된 클래스 파일이 다른곳에 있다면 이곳에 복사해 넣어야 한다.

또한 클래스 파일이 새롭게 추가되거나, 변경되었을 경우 해당 웹어플리케이션을 톰캣매니져에서 Reload시켜야 한다.

◇ 톰캣 매니져 작동

http://localhost:8080/manager/html (default) 한후 톰캣의 Admin 아이디와 암호를 입력한후 적당한 웹어플리케이션 부분의 Reload를 한다.

6. 빈을 사용하는 JSP 파일 생성

사용되는 빈태그는 3종류가 있다.

<jsp:useBean id="별칭" class="클래스명" scope="적용범위"/>
<jsp:setProperty name="별칭" property="멤버변수명" value="값"/>
<jsp:getProperty name="별칭" property="멤버변수명"/>

  • id : 해당 프로그램에서 사용하는 객체명이라 할수 있다.(예 id="myB")
  • class : package명과 class명을 함께 기술한다.(예 class="park.myBean")
  • scope : 해당 bean의 유효범위를 지정한다.(예 scope="page")
  • name : id에서 정의된 객체명(예 name="myB")

위의 내용을 참조하여 빈태그를 완성하면 다음과 같다.

  1. <% // file name : myBean.jsp %>
  2. <jsp:useBean id="myB" class="beans.myBean" scope="page"/>
  3. <!-- 객체 내부로 값을 전달한다. -->
  4. <jsp:setProperty name="myB" property="name" value="park.w.g"/>
  5. <jsp:setProperty name="myB" property="age" value="100"/>
  6. <!-- 객체 내부에 있는 값을 가져온다. -->
  7. Name =  <jsp:getProperty name="myB" property="name"/>
  8. Age =  <jsp:getProperty name="myB" property="age"/>

◇ scope(적용영역)의 종류

  • page : 해당 JSP페이지에만 적용된다.
  • request : 사용자의 요청을 처리하는 동안만 적용된다.
  • session : 사용자가 접속을 종료할 때 까지만 적용된다.
  • application : 해당 어플리케이션이 살아 있는 동안만 적용된다.

Posted by 행복한 프로그래머 궁금쟁이박
TAG

댓글을 달아 주세요