클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

자바 빈과 액션 태그 1 - 자바 빈과의 첫 데이트와 자바 빈 클래스 만들기 본문

웹 · 앱 개발/JSP & Servlet

자바 빈과 액션 태그 1 - 자바 빈과의 첫 데이트와 자바 빈 클래스 만들기

huenuri 2024. 8. 30. 06:35

드디어 6장 마지막 장 학습을 시작할 때가 되었다. 이후로도 많은 학습이 있지만 나의 첫번째 학습은 여기서 마치는 것이다. 8월부터 난 매일 한 과목씩 집중하며 짧게는 8일에서 길게는 2주까지 한 과목을 공부해나갔다. 이제 매일 하루도 쉬지 않고 공부를 시작한지 한달이 되었다. 그리고 벨로그에서 티스토리로 전환하며 벨로그에 있던 모든 글을 다 옮겼고 매일 15개밖에 공개가 되지 않아 그걸 맞추게 되니 매일 꾸준히 글을 발행하는 습관이 생겼다.

티스토리로 바꾸게 되면서 좋은 점들이 정말 많다. 앞으로 1년 후 난 얼마나 많은 글을 올리게 될지 정말 기대가 된다. 내 생전 처음으로 이렇게 많은 글을 올려본 건 처음이었다. 그리고 블로그 활동도 한 달을 넘기기 어려웠는데 이처럼 오랫동안 지속한 것도 처음이었고..

 

이제 공부를 시작해보자. 오늘부터는 진짜로 QT도 다시 시작해볼 것이다. 그리고 또 하나의 블로그에 일지를 올리며 신앙생활도 게을리하지 않으려고 한다.


 

 

 

 

자바 빈과의 첫 데이트

사용자로서 네이버를 이용하기 위해서는 우선 회원 가입을 해야한다. 이러한 회원 가입 페이지는 어떻게 만들어진 것일까? 웹 개발자를 꿈꾸는 사람들은 사용자 입장이 아닌 개발자 입장에서 회원 가입을 위한 프로그래밍 절차가 어떻게 진행되는지 전반적인 흐름을 알아야 한다.

개발자 입장에서 회원 가입 절차를 살펴보면 회원 가입 페이지에서 입력한 정보는 서버로 전송되고 서버에서는 이 정보를 데이터베이스에 저장한다.

 

 

회원 가입 페이지에서 입력한 정보는 다음 두 가지 방법으로 서버에 전송된다.

  1. 이름, 아이디, 별명, 비밀번호 등을 개별적으로 전송하는 방법
  2. 회원 정보를 하나로 묶어서 전송하는 방법

이 두 가지 방법 중에서 어떤 방법을 선택할까? 대부분 두 번째 방법을 선택한다. 하나의 묶음으로 전송하는 것이 훨씬 효율적이기 때문이다. 회원 정보를 하나의 묶음으로 관리하기 위해 나온 메커니즘이 자바 빈이다. 자바 빈은 정보의 덩어리로 데이터 저장소라고 정의할 수 있다.

프로그램에서 사용되는 정보가 여러 개라면 이를 변수에 저장하고 필요할 때마다 개별적으로 접근해서 사용하기보다는 자바 빈을 사용하면 필요한 정보에 객체를 구성하는 멤버로 기술해둔다. 그리고 한꺼번에 데이터에 접근해서 사용한다.

자바 빈은 단순히 데이터를 저장만 하는 것이 아니고 자바의 데이터 은닉이라는 개념을 사용한다. 데이터 은닉은 객체 외부에서 데이터를 직접 다루면 데이터가 손상될 수 있으므로 이를 막기 위해서 나온 객체지향 개념이다.

 

 

 

자바 빈은 데이터를 저장하기 위한 필드와 데이터를 컨트롤하는 getter/setter 메소드를 하나의 쌍으로 가지고 있는 클래스이다. getter/setter는 자바 빈의 필드에 데이터를 저장하고 조회하는 작업을 한다.

 

 

다음 두 개의 코드를 살펴보자. 회원 가입을 위한 정보인 이름, 아이디, 별명, 비밀번호 등을 개별적으로 여러 번 얻어온다.

 

 

반면 두번째 코드는 액션 태그를 사용하여 다음과 같이 회원 정보를 하나로 묶어서 한 번에 얻어온다.

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

 


액션 태그를 사용하면 데이터를 담기 위한 getter/setter를 명시적으로 호출하지 않고 자동으로 호출할 수 있기 때문에 코드의 양도 줄고 쉽게 정보를 담아 옮길 수 있다.

 


 

 

 

 

자바 빈 클래스 만들기

자바 빈도 역시 클래스이다. 그러므로 이 역시 클래스를 구성하는 요소인 필드와 메소드로 구성된다. 좀더 구체적으로 이야히가현 자바 빈은 필드와 getter/setter 메소드를 하나의 쌍으로 갖는 특별한 클래스이다. 클래스의 특별한 형태이다.

자바 빈은 서블릿에서만 사용되는 기술이 아니다. 자바에서 사용되는 개념인데 그것을 서블릿에서 가져다 사용하는 것이다.


 

 

 

자바 빈 클래스 정의하기

자바 빈은 단순히 데이터를 저장할 목적으로 사용한 클래스이다. 다음과 같이 클래스를 정의한다.

public class MemberBean {	// 자바 빈 클래스 정의

}

 

회원 정보를 저장할 자바 빈 클래스는 회원을 의미하는 Member 뒤에 Bean을 덧붙여 다른 클래스와 차별화를 두기로 하지만 꼭 그럴 필요는 없다.

 

 

 

 

패키지 선언 방법

자바 빈을 위한 클래스는 패키지를 주어 정의한다. 패키지는 유사한 기능을 하는 클래스를 모아 라이브러리로 만드는 용도로 사용된다. 개발을 하다 보면 동일한 이름의 클래스가 필요할 경우도 생긴다. 이럴 경우 패키지 이름을 달리 주면 동일한 이름의 클래스를 서로 다른 패키지에 저장하여 사용하기도 한다.

 

패키지는 다음과 같은 규칙에 따라 지정한다.

도메인이름.폴더이름.클래스이름

 


 

 

 

 

필드 선언하기

다음은 회원 가입을 위한 페이지이다.

회원 정보를 저장할 자바 빈인 MemberBean 클래스의 필드는 제한자를 private로 하여 외부에서 직접 필드에 접근하지 못하게 하고 필드에 값을 저장하고 얻어오기 위해서는 메소드를 사용한다. 이제 메소드를 정의하는 방법을 살펴보자.


 

 

 

 

자바 빈 프로퍼티

자바 빈에서는 데이터를 은닉하기 위해 필드를 private 접근 제한자로 선언하였기 때문에 직접 접근할 수 없다. 자바 빈은 private 필드를 외부에서 접근하기 위해 public으로 메소드를 정의해놓고 이를 통해 간접적으로 필드에 접근한다. 이와 같은 방식을 프로퍼티라고 한다.

프로퍼티라는 개념은 대부분의 언어에서 통상적으로 사용하는 개념으로 필드 형태로 기술하되 결국은 간접적으로 메소드를 호출하는 것을 말한다.

 

자바 빈을 사용하기 위한 메소드는 get으로 시작하는 메소드와 set으로 시작하는 메소드로 구성된다. get으로 시작하는 메소드를 getter라고 부르고, set으로 시작하는 메소드를 setter라고 부른다.

필드 값을 읽어오기 위해서는 get 다음에 필드 이름 중 첫 글자만 대문자로 지정하여 메소드를 정의해야 한다. 필드 이름이 name이라면 getName이 된다. getName은 내부에 저장된 값을 외부에 알려주어야 하기 때문에 파라미터는 없고 메소드의 리턴형이 필드와 동일한 자료 형태로 선언한다.

public String getName() {
	return name;
}

 

 

set으로 시작하는 메소드는 private로 선언된 필드를 다룰 수 있도록 하기 위한 방법으로 사용되기에 public으로 선언하는 것이 일반적이다.

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

 

 

매개 변수 값을 필드에 저장해야 하는데 위와 같이 매개 변수가 필드와 이름이 동일할 경우에는 필드 앞에 this를 붙여서 매개 변수와 구분해준다. this는 객체 자신을 참조할 수 있는 레퍼런스이다. 

MemberBean memberBean = new MemberBean();	// 객체 생성
memberBean.setName("전수빈");			// 레퍼런스 변수로 메소드 참조

 

 

this 역시 객체를 참조한다는 점에서는 지금까지 사용한 레퍼런스 변수와 동일하지만, 다음과 같은 특징이 있다.

  • 메소드 내부에서 선언하지 않아도 지역 변수처럼 사용할 수 있다.
  • 자기 자신만을 가리키는 레퍼런스이다.
  • 메소드 내부의 모든 필드와 메소드 앞에 암시적으로 사용된다.
  • 필요에 따라서는 명시적으로 사용할 수 있다.

 

 

 

 

이론 학습은 여기서 마치고 이제 실습 예제를 살펴보며 본격적으로 학습을 진행해보자!


 

 

 

 

첫 자바 빈 만들기

1. 패키지와 클래스 만들기

 

책에는 이름이 좀 길어서 난 짧게 줄여보았다.


 

 

 

 

2. 회원 정보를 저장할 필드 선언하기

 

필드는 데이터 은닉을 사용하여 private 접근 제한자로 지정한다.


 

 

 

 

3. 정보를 조회하고 저장할 getter, setter 작성하기

 

클래스는 사람 객체, 강아지 객체와 같이 특정 객체 정보를 저장하기 위한 템플릿이라고 볼 수 있다.

 


 

 

 

학습을 마치고

자바 빈이 무엇인지 배울 수 있었고 자바에서 배웠던 개념들을 다시 한번 정리해볼 수 있어서 정말 좋았다. 아는 개념들이 많았지만 한번 복습한다는 의미로 자세히 설명을 적었다.

이제 자바 빈의 액션 태그 관련 내용을 다음 포스트에서 이어서 학습해보려고 한다. 책에 있는 내용을 모두 학습하고 수업 영상도 시청하며 정리해보려고 한다.