개발하는 뚝딱이

[JSP] JavaBean, 자바빈은 왜 사용될까 본문

[JSP] JavaBean, 자바빈은 왜 사용될까

개발자뚝딱이 2020. 1. 17. 15:38

JavaBean 자바빈이란 무엇인가?

자바빈은 자바빈 규약 또는 자바빈 관례에 따라 만들어진 클래스입니다. 원래 자바빈은 비주얼 툴에서 조작하는 컴포넌트를 의미했습니다. 그러나 비주얼 툴이 쇠퇴하고 자바의 플랫폼이 웹 기반 엔터프라이즈가 많이 사용되기 시작하며 Java EE의 JSP 빈, Enterprise JavaBean과 같이 오픈 소스 기술을 통해 발전되어왔습니다. 이제, 자바빈은 원래 네 가지 규약 중 두 가지를 따라 만들어진 클래스를 의미합니다. 아래 네 규약 모두 원래의 자바빈이 따랐던 것이고, 그 중 아래 두 가지가 요즘 자바빈이라고 불리는 것의 규약입니다.

 

  • 자바빈 클래스는 'default' 패키지가 아닌 '특정' 패키지에 속해야 한다
  • 기본 constructor가 선언이 되어야 한다
  • 멤버 변수는 Property라고 부르며, 접근자는 private으로 선언되어야 한다
  • getter와 setter가 있어야 하며 이는 public으로 선언되어야 한다

 

자바빈은 왜 사용될까?

  JSP 작업은 보통 프로그래머와 디자이너가 함께 작업을 합니다. 프로그래머는 로직 단의 처리를 하고 디자이너는 UI 요소를 구현합니다. 이렇게 공동으로 작업을 하면, 디자이너는 프로그래머가 작성한 자바 코드를 마주칠 때도 있습니다. JSP 파일 내에 스크립트(declaration, scriptlet, expression)를 이용하여 자바 코드를 넣을 수 있는데, 디자이너가 볼 때는 혼란을 줄 수 있습니다. 이 부분을 고려하여 자바 코드를 최대한 줄이기 위해 JavaBean을 사용합니다.

 

/* Fruit.java */
package food;

public class Fruit {
	private String name;
    private String origin;
    private int price;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getOrigin() {
		return origin;
	}
	public void setOrigin(String origin) {
		this.origin = origin;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
}
<!-- test.jsp -->

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Test JavaBean</title>
</head>
<body>
	<jsp:useBean id="fruit1" class="test.fruit" scope="page" /> <!-- 객체생성과 같다 -->
	<jsp:setProperty name="fruit1" property="name" value="Apple" /> <!-- setter 역할 -->
	<jsp:setProperty name="fruit1" property="origin" value="USA" /> 
	Name : <jsp:getProperty name="fruit1" property="name"/> <!-- getter 역할 -->
	Origin : <jsp:getProperty name="fruit1" property="origin"/>
	
	<br>
	
	<jsp:setProperty name="fruit1" property="origin" value="Canada" /> <!-- setter 역할 -->
	Origin : <jsp:getProperty name="fruit1" property="origin"/> <!-- getter 역할 -->
</body>
</html>

결과 페이지

 

JavaBean은 다음과 같이 사용이 가능합니다.

  1. <jsp:useBean id="fruit1" class="test.fruit" scope="page" />
    • jsp에서 JavaBean을 통해 새로운 객체 즉, JavaBean을 생성할 때는 생성자 역할인 jsp:useBean 태그를 사용해야 합니다.
    • id는 객체의 이름이라고 생각하면 됩니다.
    • class에는 package명.class명으로 적어줍니다.
    • scope는 page, request, session, application 네 가지가 있습니다. 보통 한 페이지 내에서만 사용하기 위해, page를 사용합니다. 이는 나중에 더 자세히 다룰 것입니다.
  2. <jsp:setProperty name="fruit1" property="name" value="Apple" />
    • 생성된 객체의 변수에 값을 넣기 위해 사용됩니다. setter 역할이죠.
    • name은 useBean에서 지정한 id를 적습니다.
    • property는 객체의 변수를 의미합니다. java의 멤버변수 이름을 적습니다.
    • value는 넣을 값을 적습니다.
  3. <jsp:getProperty name="fruit1" property="name" />
    • 객체의 값을 각져옵니다. getter 역할입니다. getProperty를 사용하면 페이지에 바로 값을 출력합니다.
    • name은 useBean에서 지정한 id를 적습니다.
    • property는 가져올 값의 property(자바의 멤버변수)를 적습니다.

  코드의 마지막 부분에 다시 fruit1의 JavaBean을 setProperty 이용하여 값을 'Canada'로 지정하였습니다. 여기서 볼 수 있듯이, JavaBean의 장점은 재사용이 가능하다는 것입니다. 자원의 낭비를 막을 수 있는 것이죠. 이것이 자바빈을 사용하는 두 번째 이유입니다. 이외에도 forward, include, plug-in 등이 있습니다.

'' 카테고리의 다른 글

[Node.js] Node.js + Nginx + MongoDB  (0) 2020.08.06
[ IoT] Python Flask + JavaScript  (0) 2019.12.01
[ Python Flask ] 파이썬 플라스크  (0) 2019.12.01
[javascript] favicon 404에러  (0) 2019.11.08
[Spring] war파일 배포 tomcat 404에러  (0) 2019.10.07