JavaBeans?

서희찬·2023년 12월 11일
0

웹프로그래밍

목록 보기
30/30
post-thumbnail
post-custom-banner

JavaBeans와 컴포넌트

컴포넌트

  • 다른 무언가를 만들기 위한 부품을 지칭
  • 각각 독립적인 기능, 컴포넌트 조합으로 다양한 형태의 결과물을 만들 수 있음

즉, 레고와 같다고 보면된다.

그렇기에 이런 모듈들을 조합할려면 규격화된 인터페이스가 필요하다

엔터프라이즈 자바 빈즈 (Enterprise Java Beans, 이하 EJB)

Java EE(Java Enterprise Edition)의 핵심

  • 애플리케이션에서 비즈니스 로직을 구현하려는 컴포넌트 모델
    보안을 중시하고 규모가 크며 확장 및 다른 시스템과의 상호·운용을 필요로 하는 애플리케이션 개발에
    필요한 핵심 기술
  • JPA(Java Persistence API)를 핵심으로 하는 Java EE 5가 발표되면서(최신 버전은 JavaEE 7) 기존 엔티티빈(EJB 빈 유형 중 하나)의 상당 부분이 대체됨
  • JSP도 JavaEE 의 프레젠테이션 레이어의 한 부분으로 볼 수 있음

뭐..이런 얘기가 있다..

J2EE의 구성과 엔터프라이즈 자바 빈즈

이런.. 구성을 띄고 있다.

JSP와 Beans 연동

JavaBeans ✨

  • 자바 클래스로 일반 클래스처럼 사용 가능
  • JSP 파일의 Scriptlet 에서 인스턴스를 만들어 사용 가능
  • JSP Beans만의 특징적인 요소를 잘 활용하면 더욱 편하게 프로그램을 작성가능
  • 사용자 입력 처리에 필요한 HTML이나 JSP와 폼의 액션에 연결된 JSP 파일 필요
  • 폼을 처리하는 JSP 파일에서 참조할 Beans 클래스도 필요
  • 경우에 따라 결과를 보여주는 HTML이나 JSP 파일이 필요

JavaBeans 규약 ✨

  • 빈은 default 패키지가 아닌 특정 패키지에 속해야 함
  • 기본 생성자가 있어야 함
  • 멤버 변수는 private으로 선언
  • 멤버 변수의 접근을 위한 getter/setter 메서드 필요(public 접근자)
  • 객체의직렬화(선택)

JSP Beans

JSP에서 JavaBeans와 연동하기 위해 만들어진 JSP 컴포넌트 클래스

  • JavaBeans과 결합해 웹 프로그램을 더욱 간편하고 단순한 구조로 개발 지원
  • JavaBeans와 모듈화 지원
  • 컨테이너에 위치, JSP에 데이터베이스 연동 등✨
  • 데이터 처리와 공용화된 기능을 제공
  • 프로그램의 중복을 줄이고 더욱 원활한 유지·보수 가능
  • JSP 코드 내에 Scriptlet보다는 JSP Beans를 만들어 사용하는 것이 좋음✨

MVC 패턴

개별 JSP에서 Beans에 접근하는 것보다 Controller에서 Beans를 모델로 연동

request, session, application 등 내장 객체의 속성 관리 기능을 이용해 해당 뷰(JSP)에 Beans 객체를 전달하는 방법이 권장

JavaBean Class 작성

일반적인 자바 클래스

  • 데이터를 담을 property(맴버변수)
  • 데이터를 가져오거나 세팅하는 method로 구성

JavaBean class 구성

  • 클래스명 : 자바빈 클래스의 이름은 Bean을 붙임
  • 맴버 변수 : private으로 지정
  • getter/setter 메서드
    • set 메서드 : set맴버변수명()
    • get 메서드 : get맴버변수명()
class MyBean {
  private String username; // 멤버변수
  public String getUsername() { // get메서드 : 멤버변수명과 매칭
	  return username;
  }
  public setUsername(String username) { // set메서드 : 멤버변수명과 매칭
	  this.username = username;
  }
}

JSP에서 Beans 연동

<jsp:useBean> 액션을 사용하여 JSP에서 빈즈 선언
<jsp:useBean id="빈이름" class=JavaBean 클래스 경로" scope="영역" />
<jsp:useBean id="mybean" class="MyBean" scope="request" />

<jsp:useBean>액션은 다음과 같은 자바 코드와 동일

REQUEST 영역의 경우

<%
 MyBean mybean = (MyBean)request.getAttribute("mybean");
 if(mybean == null) { // 기존에 Bean 객체가 없는 경우
   mybean = new MyBean();
   request.setAttribute("mybean", mybean);
 }
%>

PAGE 영역인 경우

<% MyBean mybean = new MyBean(); %>

JSP에서 Beans의 프로퍼티 설정

JSP에서 Beans를 선언 후, setProperty, getProperty액션으로 빈즈 값 이용

  • value 생략 시 프로퍼티 명과 같은 파라미터의 이름의 값으로 설정됨
    <jsp:setProperty name="빈이름" property="프로퍼티명(맴버변수)" [value="값"] />
    <jsp:setProperty name="mybean" property="username" value="test1" />

property="*"

  • 입력이 많은 경우 사용

value속성의 값

  • form의 parameter로 넘어오는 이름이 같은 경우 생략 가능
    <jsp:setProperty name="mybean" property="username" />
  • Scriptlet의 경우
<%
mybean.setUsername(request.getParameter("username"));
%>

가져오는건 getProperty으로 가져오면된다.
<jsp:getProperty name="빈즈명" property="프로퍼티명" />

Beans 연동의 예

  1. HTML에서 form으로 받은 사용자 입력을 username으로 a.jsp로 전달
  2. a.jsp : useBean으로 Beans class 호출
  • form의 프로퍼티 값을 setProperty로 Beans class 멤버변수로 전달
  • 전달시 Beans 클래스의 setUsername이 호출됨
  • b.jsp : useBean로 Beans 클래스를 참조하고 getProperty로 멤버변수 값을 출력
profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)
post-custom-banner

0개의 댓글