본문 바로가기
language/JSP

javabeans 와 EJB(Enterprise Java Bean)의 차이점

by 스파이디웹 2020. 6. 9.
728x90

JavaBean:

-자바로 작성된 컴포넌트들을 일반적으로 일컫는 말

-자바는 프로그램 기본단위가 클래스이고, 자바빈은 클래스들이 복합적으로 이루어진 구조

-자바 언어의 프로그램 작성 규칙과 문법을 따름

-자바빈은 자바의 클래스를 만드는 것과 같은 규칙을 갖는다.

 

클래스의 작성 순서

1.package 패키지명;//없으면 생략 가능

2.import 패키지명을 포함한 클래스의 풀네임;//없으면 생략 가능

3.class 클래스명{//필수 정의, 생략 불가능

}

 

자바의 클래스 선언

-접근제어자 [키워드] class 클래스명{}

 

●접근 제어자(access modifier):

-public,private,default(접근 제어자가 없는 형태)가 올 수 있는데, 자바빈을 작성할 때는 접근 제어의 강도가 가장 약한 public을 주로 사용한다.

-웹에서는 불특정 다수의 접근을 허용해야 하기 때문에 누구나 접근할 수 있는 public을 사용한다.

 

●키워드(key word):

-final, abstract, static 등이 있으나 자바빈 클래스에서는 사용하지 않는다.

 

●클래스명(class name):

-첫 글자는 대문자로 시작하고 나머지는 소문자를 사용한다.

-또한 여러 개의 단어로 이루어진 경우, 다음 단어의 첫 글자는 대문자로 시작한다.ex) public class UtilClass{}

 

-자바의 클래스는 캡슐화(Encapsulation)의 역할을 한다

-캡슐화는 객체 지향의 가장 중요한 개념중 하나인 정보은닉을 구현한다.

 

●자바 클래스를 캡슐화 형태로 작정

-정의된 클래스는 사용 시 객체로 할당되며, public으로 선언해 누구나 접근할 수 있는 객체로 생성

-클래스의 멤버 변수는 private으로 선언해서 정보에 직접 접근할 수 없도록 한다.

-객체의 정보를 갖는 멤버 변수에 접근하려면 setter(세터)/getter(게터) 메소드를 사용한다.

setter/getter 메소드의 접근 제어자는 public을 사용한다.

 

-자바빈의 클래스 선언은 접근 제어자로 public을 사용하고, 멤버 변수의 접근 제어자는 private을 사용해서 작성한다.

-자바빈에서는 멤버 필드를 프로퍼티(property)라고도 부른다.

-프로퍼티의 값을 저장하고 얻어내는 메소드를 setter/getter 메소드라 하며, 접근 제어자로 public을 사용한다.

 

자바빈 클래스의 예시

package bean.logon;

public class DbDateLogin{//자바빈 클래스

//프로퍼티

  private String id;

  private String passwd;

//setter 메소드

  public void setId(String id){

    this.id = id.trim();

  }

  public void setPasswd(String passwd){

    this.passwd = passwd.trim();

  }

//getter 메소드

  public String getId(){

    return id;

  }

  public String getPasswd(){

    return passwd;

  }

}

 

자바빈의 작성(저장)위치

 

-일반적으로 자바파일(서블릿, 자바빈)은 [웹애플리케이션 폴더]-[WEB-INF]-[classes]폴더에 위치

-가상 환경 이클립스에서는 [프로젝트명]-[java Resources]-[src] 폴더에 자바빈 클래스들이 위치한다.

-이클립스에서 자바빈을 포함한 로직 파일을 작성하면 원본 파인은 [프로젝트명]-[Java Resources]-[src] 폴더에 위치하게 되고, 또한 자동으로 컴파일되어'.class' 파일은 [build]-[classes]폴더에 위치한다.

-작성이 끝난 후에 해당 프로젝트를 WAR파일로 내보내기 하면 [build]-[classes]폴더에 있는 자바 클래스 파일들은 서버상의 [웹 애플리케이션 폴더]-[WEB-INF]-[classes] 폴더에 알아서 위치된다.

 

자바빈 작성

 

1.[new]-[class]에서 로 자바 클래스를 하나 만든다.

2.package 패키지이름;

 

 public class 클래스이름{

      private String id(프로퍼티 이름);

}

 

3.[source]-[Generate Getters and Setters] 메뉴에서

id 프로퍼티(프로퍼티 이름)를 선택해서

insertion point: after 'id(프로퍼티 이름)'

sort by: Fields in getter/setter pairs

-OK클릭

 

4.package 패키지이름;

 

public class 클래스이름{

private String id(프로퍼티 이름);

 

  public String getId() {

 

  }

 

  public String setId(String id) {

 

  }

}

처럼 만들어진다.

 

자바빈과 연동하는 액션 태그

 

자바빈 관련 액션 태그 3가지

 

1.<jsp:useBean id="..." class="..." scope="..."/>   자바빈 객체를 생성

2.<jsp:setProperty name="..." property="..." value="..."/>    생성된 자바빈 객체의 프로퍼티 값을 저장

3.<jsp:getProperty name="..." property="..." />     생성된 자바빈 객체의 프로퍼티 값을 사용하기 위해 얻어냄

 

●<jsp:useBean id="빈 이름" class="자바빈 클래스 이름" scope="범위"/>

-id속성: 생설될 자바빈 객체(인스턴스)의 이름을 쓰는 곳. 필수 속성이므로 생략할 수 없다.

-class 속성: 객체가 생성될 자바빈 클래스명을 기술하는 곳으로, 패키지명을 포함한 자바 클래스의 풀네임을 기술한다.(필수속성) ex)class="패키지이름.클래스이름"

-scope 속성: 자바빈 객체의 유효 범위로 자바빈 객체가 공유되는 범위를 지정한다. scope 속성값으로 page, request, session, application을 가지며 scope 속성 생략시 기본값은 page이다.

 

●<jsp:setProperty name="빈 이름" property="프로퍼티 이름" value="프로퍼티에 저장할 값"/>

-name 속성: 자바빈 객체의 이름을 지정한다.(필수 속성)

-property 속성: 프로퍼티명을 지정한다.(필수 속성)

-value 속성: 프로퍼티에 저장할 값을 지정하며, 생략가능

 

<jsp:useBean id="inDb" scope="page" class="bean.logon.DbDataLogin">

   <jsp:setProperty name="inDb" property="*"/>

</jsp:useBean>

프로퍼티 속성값을 *(애스터리스크)로 지정하면 모든 프로퍼티 값이 한번에 저장.

 

사용자 입력 폼

<tr>

      <td bgcolor="" class="normalbold" width="200">사용자 ID</td>

      <td width="400">

         <input type="text" name="id" size="10" maxlength="10">

      </td>

</tr>

 

자바빈을 사용하는 JSP 페이지

<jsp:useBean id=:inDb" scope="page" class="bean.logon.DbDataLogin">

   <jsp: setProperty name="inDb" property="id" />

</jsp:userBean>

 

자바빈 클래스

public void setId(String id) {

    this.id= id;

}

 

이 세개의 굵게 강조한 부분이 일치해야 한다.

 

●<jsp:getProperty name="빈 이름" property="프로퍼티 이름" />

-name 속성: 자바빈 객체의 이름을 지정한다.(필수 속성)

-property 속성: 프로퍼티명을 기술하는 곳이다.(필수 속성)

 

위의 <jsp:getProperty name="testBean" property="id"/> 액션 태그는 자바빈 클래스의 getId() 메소드와 자동 연동된다.

property 속성값"id"는 자바빈 클래스의 프로퍼티 id를 의미.

728x90

댓글