자바빈즈 ( Java Beans )
자바빈즈는 자바 코드로 작성된 컴포넌트들로 JSP 페이지에서 비지니스 로직을 제거하기 위한 방법으로 제공하는 기술입니다.
현재 웹 프로그램이나 응용 프로그램은 모두 MVC(Model-View-Control)방식으로 제작합니다. MVC 방식은 프로그램을 모델-뷰-컨트롤러 나누어 작성한 후 컨트롤러를 사용하여 뷰와 모델 영역을 연결시키는 방식입니다. 이 때 자바빈즈은 로직인 모델 영역을 작성하는 기술로 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법입니다. 즉, JSP페이지에서 화면을 표현하기 위한 계산식이나 자료들의 처리를 담당하는 자바 코드를 따로 분리하여 작성한 것이 자바빈즈입니다.
일반적인 자바빈은 속성과 그 속성에 대한 getting&setting 메소드로 구성된 데이터객체(VO)를 말하며 데이터 전송에 사용하는 객체를 말합니다. 또한, 자바빈즈는 JSP 스크립트 요소 안에 자바 클래스를 사용하여 로직을 작성할 수 있으며 자바빈 액션 태그와 자바빈즈 클래스를 매핑시켜 사용할 수 도 있습니다. 액션태그와 자바빈즈 클래스를 매핑 시킬 때는 속성과 속성의 값을 얻고 넣는 getting, setting 메소드를 구현하여 사용해야 합니다.
JSP MVC 패턴은 화면표현은 JSP가 맡고 로직 부분은 자바빈즈가 맡으며 컨트롤 부분은 서블릿이 담당하는 방법입니다. 여기서 JSP 페이지로 커스텀 태그나 표현언어를 사용하면 자바 로직 코드가 거의 없는 JSP 페이지를 작성할 수 있습니다.
일반적인 자바빈즈는 다음과 같은 형태를 지니고 있습니다.
public class Bean {
int x;
int y;
public int getX(){ return x; }
public int getY(){ return y; }
public void setX(int x){ this.x=x; }
public void setY(int y){ this.y=y; }
}
JSP 페이지에서 위에 작성한 자바빈즈를 사용하기 위해서는 액션 태그나 스크립트 요소안에 자바 코드를 사용하여 사용할 수 잇습니다.
액션 태그를 사용하여 자바빈즈를 사용하는 예제
<jsp:userBean id="Bean" class="Bean"/>
<jsp:setProperty name="Bean" property="x" value="10"/>
<jsp:setProperty name="Bean" property="y" value="20"/>
</jsp:useBean>
<jsp:useBean name="Bean" property="x"/>
<jsp:useBean name="Bean" property="y"/>
스크립트 요소안에 자바코드를 작성하여 사용하는 방법
<%
Bean bean = new Bean();
bean.setX(10);
bean.setY(20);
%>
<body>
빈의 x 값은 : <%=bean.getX()%>
빈의 y 값은 : <%=bean.getY()%>
</body>
자바빈 액션 태그를 사용할 때의 장점
자바빈 액션 태그를 사용하면 FORM 데이터나 HTML 페이지에서 넘어오는 데이터를 쉽게 객체에 저장할 수 있습니다. 다음과 같은 폼이 있다면,
<form method="post" action="폼데이터를 처리할 페이지">
<input type="text" name="name"/>
<input type="text" name="age"/>
</form>
이런 폼 데이터를 처리할 자비빈 객체가 있다면 그냥 스크립트 코드안에 자바빈즈를 직접 생성하여 사용할 경우에는 다음과 같이 처리해야합니다.
<%
데이터객체 vo = new 데이터객체();
vo.setName( request.getParameter("name") );
vo.setAge( Integer.parseInt( request.getParameter("age") ) );
%>
즉, 직접 setting 메소드를 호출하여 데이터를 객체에 집어넣어야 하며 또한 객체의 데이터형도 정확하게 맞춰서 사용해야 합니다. 하지만 useBean 액션 태그를 사용할 경우에는 다음과 같습니다.
<jsp:useBean id="vo" class=""데이터객체">
<jsp:setProperty name="vo" property="*"/>
</jsp:useBean>
또는
<jsp:useBean id="vo" class="데이터객체">
<jsp:setProperty name="vo" property="name"/>
<jsp:setProperty name="vo" property="age"/>
</jsp:useBena>
useBean 액션 태그를 사용하면 우선은 문자열과 숫자형의 자료형 구분이 어느정도 자유로워집니다. 물론, 숫자형 속성에 문자형 데이터가 넘어왔다면 오류를 나타내지만 Form에서 넘어온 문자형을 다시 숫자형으로 변환시켜야 하는 작업을 할 필요가 없습니다.
또한, property 속성에 "*(asterisk)"를 사용하면 Form 으로 넘어온 데이터를 자바빈 속성에 바로 지정할 수 있습니다. 하지만 "*" 를 사용할 시에는 폼으로 넘어오는 데이터의 변수면이 자바빈의 속성명과 같아야 하면 폼의 변수들과 자바빈의 속성이 모두 같아야만 오류를 발생하지 않습니다.
※ 위에 두 방법 중에 어떤 방법을 써야 하는가?
- 자바코드를 이용하는 방법 : 개발자에게 더 친숙한 방법
- 액션태그를 이용하는 방법 : 개발자가 개발해 놓은 자바빈즈를 쓰는 디자이너에게 더 친숙한 방법
- 결론은 알아서 편한 방법을 택해라
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
에러 페이지 지정하는 방법과 응답상태별 페이지 지정 (0) | 2009.11.09 |
---|---|
웹 어플리케이션에서 자바빈즈의 위치 (0) | 2009.11.09 |
자바빈 액션태그 (0) | 2009.11.09 |
포워드 액션 태그 (0) | 2009.11.09 |
컴파일 결과를 포함시키는 인크루드 액션 태그 (0) | 2009.11.09 |