자바과정/과제물

자바 빈즈란?

Parkej 2021. 3. 8. 13:59

출처 : opentutorials.org/module/3569/21296

 

* JSP의 표준 액션 태그로 접근할 수 있는 자바 클래스로서  값을 가지는 속성(멤버변수)과 값을 설정하는 메소드(setter) 값을 추출하는 메소드(getter)로 이루어져 있다. 자바빈즈는 하나의 JSP 페이지에 종속적으로 사용되는 것이 아니라, 여러 JSP 페이지에서 사용될 수 있다. 자바빈즈는 다른 자바 클래스와 마찬가지로 자바 객체이다. 

 

장점

  • 폼 데이터 처리 용이 : 클라이언트로부터 입력을 받아 처리하기 위해서, 만약 50개의 질의 문자열의 있으면 50번의 request.getParameter()를 통해 추출해야하므로 힘들다. 그렇지만 자바빈즈를 사용하면 액션 태그를 한 번만 사용해서 모든 질의 문자열의 값을 추출하여 객체에 저장할 수 있다. 
  • 자바빈즈 활용 범위 확장용이 : 웹에서 사용하는 HTTP 프로토콜의 무상태 특성 때문에 상태정보 유지 기술이 필요하다. 여러 페이지에서 사용해야 하는 데이터는 자바빈즈를 이용하여 쉽게 유지해 여러 범위에서 사용할 수 있다.
  • 컴포넌트 기반 구현 가능 : JSP 페이지 내에서 필요한 비즈니스 로직을 컴포넌트로 만들어 활용하면 JSP 페이지의 크기는 작아지고, 각 JSP 페이지에서 필요로 하는 기능은 컴포넌트 재활용을 통해 구현되므로 웹 애플리케이션을 효과적으로 구현할 수 있다. 

- JSP 페이지 내에서 자바빈의 활용은 표준 액션 태그로 수행함.

<jsp:useBean>,

<jsp:setProperty>,

<jsp:getProperty>

가 JSP 자바빈즈를 활용할 때 사용하는 표준 액션 태그이다

* 이 액션 태그를 활용하여 자바빈즈 객체가 올바르게 사용되려면 자바빈즈 객체가 정해진 조건에 따라 만들어져 있어야 한다.


JSP 자바빈즈 개발 규약

  • 패키지화
    JSP 페이지에서 자바빈즈를 사용할 때 기본 패키지에 있으면 인식이 안 됩니다. 그래서 반드시 패키지화가 되어 있어야 합니다.
  • 기본생성자 존재
    자바빈즈의 객체 생성은 <jsp:useBean> 액션 태그로 생성하는데 객체가 생성될 때 기본 생성자를 이용하기 때문에 반드시 기본 생성자가 있어야 한다. 기본 생성자는 인자값이 없는 생성자를 말한다.

  • 멤버변수의 접근자는 private로 선언
    자바빈즈 객체의 속성 값은 외부에서 직접 접근할 수 없도록 private으로 선언합니다. 자바빈즈 객체의 속성값은 메소드로만 접근하게 해야 합니다.
  • getter 메소드
    private로 선언한 멤버 변수의 값을 반환하는 메소드를 작성합니다. 메소드는 값을 반환하는 기능으로 구성되며, 메소드의 반환 타입은 반환하는 멤버변수의 타입으로 지정합니다. 이 메소드의 이름을 만드는 규칙은 get 다음에 멤버변수의 이름을 붙인다. 이때 이름의 첫글자는 대문자로 변경하고, 두 번째 글자부터는 대소문자, 철자 동일하게 추가합니다.
  • setter 메소드
    private로 선언한 멤버 변수의 값을 설정하는는 메소드를 작성합니다. 이 메소드의 이름을 만드는 규칙은 set 다음에 멤버변수의 이름을 붙인다. 이 메소드는 멤버변수 값을 수정하는 기능으로 구성되어야 하며, 값을 수정만 하므로 반환 값과 반환 타입은 지정할 필요가 없고 수정할 값을 처리하는 매개변수를 선언해야 합니다. 이때 이름의 첫글자는 대문자로 변경하고, 두 번째 글자부터는 대소문자, 철자 동일하게 추가합니다.
  • getter와 setter 접근자는 public으로 선언
    private으로 선언한 멤버변수의 값을 추출하는 getter 메소드와 setter 메소드의 접근자는 누구나 접근이 가능 하도록 public으로 선언합니다. 자바빈즈의 getter와 setter 메소드를 public으로 선언해야 JSP 페이지에서 이 메소드를 호출할 수 있습니다. 

JSP 자바빈즈 생성과 사용

1. 생성(패키지화)

 

2. 빈즈 클래스 생성

 

3. 생성한 빈즈 클래스의 초기 형태

 

4. private 정의와 생성자의 초기화, getter/setter 추가

 

5. JSP 문서의 자바빈즈 사용

 

 - <jsp:useBean> 액션 태그로 객체가 생성되면 주어진 자바빈즈 클래스에서 기본 생성자만 호출된다. 따라서 JSP자바빈즈 객체는 기본 생성자가 있어야 한다.


속성은 다음과 같다.

  • id 속성
    주어진 페이지에서 자바빈즈 객체를 식별할 수 있는 유일한 명칭을 지정할 때 사용합니다. 이 id 속성의 값을 가지고와 각각의 객체를 구분합니다. id 속성의 값을 지정할 때 규칙은 유일해야하고 대소문자를 구분한다 그리고 영문자, 숫자, _(언더바) 문자로 시작해야 합니다.
  • class 속성
    사용하려는 자바빈즈 객체의 실제 클래스명을 패키지명과 함께 지정 합니다.
  • type 속성
    자바빈즈 클래스의 객체에 접근할 떄 어떠한 타입으로 접근할 것인지를 지정합니다. 이 속성이 생략되면 기본으로 주어진 자바빈즈 클래스의 타입으로 접근하지만, 특별히 부모 type으로 접근하게 하려면 type 속성을 사용하여 부모 타입으로 지정합니다. 빈 객체는 JSP 컴파일 단계에서 이 속성으로 지정되는 클래스 타입으로 변환됩니다.
  • scope 속성
    scope 속성값으로 page, request, session 그리고 application 중 하나를 지정할 수 있다 이 속성이 생략되면 기본값으로 page가 적용됩니다.
    - page : 하나의 JSP 페이지에서만 사용
    - request : 요청이 처리되는 동안 forward, include 된 페이지 간에 사용
    - session : 클라이언트 단위로 사용
    - application : 웹 애플리케이션 단위로 사용

6. getter 메소드 호출

- <jsp:useBean> 액션 태그로 자바빈즈 객체를 생성한 후 속성 값을 추출할 때, 즉, getter 메소드를 호출하여 필요한 기능을 수행하고 그 결과를 주어진 위치에 출력할때 사용한다.


속성은 다음과 같다.

  • name 속성
    사용하려는 자바빈의 <jsp:useBean> 태그에서 정의해 놓은 id 속성값과 동일하게 지정합니다.
  • property 속성 
    property 속성에는 값을 추출하려는 자바빈즈 객체의 멤버변수 이름을 지정합니다.

 

7. setter 메소드 호출

 - <jsp:useBean> 액션 태그로 자바빈즈 객체를 생성한 후 속성 값을 수정할 때, 즉, getter 메소드를 호출하는 표준 액션 태그입니다.


속성은 다음과 같다.

  • name 속성
    사용하려는 자바빈의 <jsp:useBean> 태그에서 정의해 놓은 id 속성값과 동일하게 지정합니다.
  • property 속성
    property 속성에는 값을 수정하려는 자바빈즈 객체의 멤버변수 이름을 지정합니다.
  • value 속성
    자바빈즈 객체의 속성을 변경하려는 값을 지정합니다.
  • param 속성
    질의 문자열에서 param 속성에 할당된 값과 같은 name의 값으로 자바빈의 속성값을 설정합니다.

* setter의 각 속성 사용법


 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- 표준 액션 태그 -->
<!-- 객체 생성 -->
<jsp:useBean class="test.beans.TestBean" id="test"/>

<!-- getter 메소드 호출 -->
<jsp:getProperty property="name" name="test"/><br>
<jsp:getProperty property="number" name="test"/>


<!-- setter 메소드 호출 -->
<!-- param -->
<!-- 질의 문자열에서 param 속성에 할당된 값과 같은 name의 값으로 자바빈의 속성값을 설정합니다. -->
<jsp:setProperty property="*" name="test" value = "난"/>
<jsp:setProperty property="number" name="test" value = "12345"/>

<hr>

<jsp:getProperty property="name" name="test"/><br>
<jsp:getProperty property="number" name="test"/>


<!-- 설정값 생략 -->
<!-- 만일 값을 지정하지 않으면 질의문자열에서 멤버변수와 같은 name을 찾아서 자동으로 설정됩니다. -->
<!--
jsp:setProperty property="name" name="test"
-->

<!-- property = "*" -->
<!-- property 속성에 *(와일드카드)를 표기하는 방법은 자바빈 객체의 속성값들을 초기화하는 매우 강력한 방법이다. 클라이언트로부터 입력받은 질의 문자열을 추출하여 자바빈즈 객체에 바인딩하는 데 편리합니다. -->
<!--
jsp:setProperty property="*" name="test"
-->

<!-- 
※주의할 점
setter 메소드 호출시 자바빈즈 객체의 멤버변수와 같은 이름으로 추출되므로 
자바빈즈의 멤버 변수 이름과 질의 문자열의 파라미터 이름을 대소문자까지 동일하게 지정해야지만 값이 올바르게 설정됩니다.
 -->
 
</body>
</html>

 

 

 

- JavaBeans

 

 => JavaBeans란 자바로 작성된 소프트웨어 컴포넌트를 지칭하는 단어로 이 컴포넌트를 빈(Bean)이라고 부르며 썬사의 JavaBeans API에 정의된 스펙에 따라 만든다.

 => JavaBeans는 자바 관련 소프트웨어 개발에 있어 재사용이 가능한 표준 컴포넌트 모델이다.

 

 

- Beans

 

  => java 클래스들을 모아놓은 package 

  => Model, View, Controller(MVC패턴 구현)

     Model - 저장소역할( setXxx(), getXxx() 구현) - java코딩 

     View - GUI역할(클라이언트에게 보여줄 화면구성 구현 ) - jsp코딩

     Controller - DAO(데이터처리 담당 -DB연동)역할 , 비즈니스 로직

                     내부적으로 보이지 않게 처리해야하는 기능 구현 -java코딩, 서블릿문서

 

 => Beans를 이용하여 MVC패턴으로 구현함으로써 재사용성과 유지보수 용이

 => 이러한 MVC패턴을 기반으로 나오는 다양한 프레임웍이 있음.

 

 

빈즈의 유효범위

1. page : 하나의 jsp 페이지 내에서만 유효

2. request : 하나의 요청에 대한 처리관련 jsp 페이지들에 유효, 포워딩 되거나 인클루드된 페이지에[서 이 빈을 사용하가능하다. 

3. session : 빈은 서버 파트의 기억 공간인 session객체에 저장된다. 하나의 사용자(브라우저)에 대한 유효 

 ** 유효시간 : 특정사용자가 웹브라우저를 닫을때까지, 특정 설정이 없으면 30분동안 요청이 없을때까지 (conf/web.xml에서 세션시간(Session time out)을 조정할 수 있다. 

4.  application : JSP 애플리케이션과 생명주기를 같이함, 서버가 종료되기전까지 메모리에 상주, 웹 애플리케이션이 undeploy 되기전까지 메모리에 상주

 

각 action 의 크기

page < request < session < application 

 

자바빈즈 클래스를 정의할 때에는 몇 가지 규칙을 따라야 합니다. 규칙이 없다면 JSP에서 사용이 불가능하겠죠?

1) 패키지화

- 자바빈즈는 반드시 패키지가 있어야 합니다. (default package에 있으면 안됩니다.)

2) 기본생성자 존재

- 자바빈즈의 객체 생성은 <jsp:useBean>을 호출하는데 이는 기본생성자를 사용하는 액션태그 입니다.

3) 멤버변수의 접근제어자는 private으로 선언하고 getter와 setter를 이용하여 멤버 변수에 접근합니다.

- getter와 setter를 이용해서 멤버변수에 접근할 수 있도록 규칙을 만들었습니다. 모든 JSP 페이지에서 접근할 수 있도록 getter와 setter는 public으로 설정합니다.

 

 

Get 

 - 자바빈에 포함되어 있는 속성 값을 추출할 때 사용함.

<jsp:getProperty name = "bin" property="id"/>

 

Set

 - 자바 빈의 속상 겂을 저장할 때 사용함

<jsp:setProperty name = "bin" property="id" param="a"/>
<jsp:setProperty name = "bin" property="*" />
반응형