Java Beans


  • 자바에서의 class를 JSP에서는 Java Beans라고 부른다.
  • 스프링에서는 Model이라고 하며 해당 모델이 어디서 사용되느냐에 따라 MemverVO, MemberDTO, MemberDAO, Entity로 나뉜다.
  • 자바로 작성되고 재사용이 가능한 소프트웨어 컴포넌트다.

Java Beans의 장점

  • form data 처리가 용이하다.
    • 수 많은 파라미터를 자바 빈에 담아 사용/전달 할 수 있다.
  • 재사용성
    • 하나의 JSP페이지에 종속적으로 사용되는 것이 아니라 여러 JSP페이지에서 사용될 수 있다.
  • 컴포넌트 기반 구현
    • Java Beans를 통해 객체와 관련된 작업들은 해당 클래스에서 작성 가능하다.
    • Java Beans가 하나의 컴포넌트를 구성한다.

Java Beans의 관례

  • 자바빈즈는 디폴트 패키지에 있으면 안된다.
  • 기본 생성자를 가지고 있어야 한다.
    • <jsp:useBean .../>호출시 사용한다.
  • 속성들은 직접 접근하지 못하도록 만든다. private
  • 속성들은 public getter/setter 를 통해 접근할 수 있어야 한다.
    • getter/setter 관례를 따르지 않으면 호출 불가하다.
  • 직렬화되어야 한다.
    • Java Beans의 상태의 지속성을 위해 저장 혹은 복원 시키기 위함
  • 필요한 이벤트 처리 메서드를 포함하고 있어야 한다.
    • 뷰 단에서는 다양한 이벤트 처리가 있을 수 있다.
    • Java Beans는 뷰 단에서 발생할 수 있는 이벤트 처리까지 핸들링할 수 있어야 한다.

Java Beans 액션태그

액션태그설명
<jsp:useBean id=”member” …/>자바빈즈 생성
<jsp:setProperty name=”member” …/>생성된 자바빈즈를 통해 속성값 변경
<jsp:getProperty name=”member” …/>생성된 자바빈즈를 통해 속성값 반환

Java Beans 생성

  • 자바빈즈 클래스에서 기본 생성자 호출
  • 자바빈즈 객체는 기본 생성자 정의되어야 함
<jsp:useBean id="simple" class="simple.SimpleBeans"/>

<%
		SimpleBeans simple = new SimpleBeans(); 
		// 이렇게 쓰는 것과 동일 (해당 페이지 공간안에 객체 변수 이름 중복 조심)

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

Java Beans를 통한 속성값 변경

  • 일반적인 방법
<jsp:setProperty name="simple" property="name" value="a"/>
<jsp:setProperty name="simple" property="value" value="a123!"/>

<%
		simple.setName("a");
		simple.setValue("a123!");
%>
  • value 생략
<jsp:setProperty name="simple" property="name"/>
<jsp:setProperty name="simple" property="value"/>

<%
		simple.setName(request.getParameter("name"));
		simple.setName(request.getParameter("value"));
%>
  • property = "*"
<jsp:setProperty name="simple" property="*"/>

<%
		simple.setName(request.getParameter("name"));
		simple.setName(request.getParameter("value"));
%>
  • 속성

    • name : 사용하려는 java bean의 jsp:useBean 태그에서 정의해 놓은 id 속성값과 동일하게 지정

    • property

      • property 속성에는 값을 수정하려는 자바빈즈 객체의 멤버변수 이름을 지정
      • * (와일드카드) 표기 가능
      • 자바빈 객체의 속성값들을 일괄적으로 초기화 가능
      • 클라이언트로부터 입력받은 request 객체에서 자바빈즈 객체에 바인딩하는 데 편리
    • value 생략가능

      • 자바빈즈 객체의 속성을 변경하려는 값을 지정
      • 만일 값을 지정하지 않으면 request 객체의 멤버변수와 같은 name을 찾아서 자동 설정
    • param 생략가능

      • request 객체에서 param 속성 값과 같은 name의 값으로 자바빈의 속성값을 설정
  • 주의사항

    • 자바빈즈가 가진 필드가 name, value라면 setName(), setValue() 함수를 가져야 함
      • 만약 함수이름이 다르면 setter 호출 불가 ( 관례 )
    • request에 저장된 이름도 name, value 여야 함

Java Beans를 통한 속성값 반환

<jsp:getProperty name="simple" property="name"/>
<jsp:getProperty name="simple" property="value"/>

<%
		simple.getName();
		simple.getValue();
%>
profile
github : https://github.com/kiaeh2323 , email : kiaeh9269@gmail.com

0개의 댓글