자바빈(JavaBean)

essential·2023년 8월 6일
0

JSP

목록 보기
16/21

자바빈(JavaBean)

  • 자바로 작성되어진 컴포넌트를 의미
  • JSP페이지의 내용 중 로직에 해당하는 부분을 별도의 자바 코드로
    작성한 것을 말함

자바빈을 사용하는 이유

  • 디자인 부분과 로직 부분을 분리하기 위함
  • JSP 페이지의 디자인 부분과 로직 부분을 나눔으로써 복잡한 JSP
    코드들을 줄이고, 프로그램의 재사용성을 증가 시킴

자바빈의 설계 규약

  • 멤버 변수마다 별도의 get/set 메소드가 존재해야 한다.
  • get 메소드는 파라미터가 존재하지 않아야 한다.
  • set 메소드는 반드시 하나 이상의 파라미터가 존재해야 한다.
  • 빈즈 컴포넌트의 속성은 반드시 읽기 또는 쓰기가 가능해야 한다. 단,
    읽기 전용인 경우
  • 메소드만 정의할 수 있다.
  • 생성자는 파라미터가 존재하지 않아야 한다.
  • 멤버 변수의 접근 제어자는 private이고, 각 set/get 메소드의 접근
    제어자는 public으로 정의되어야 하며 클래스의 접근 제어자는
    public으로 정의한다.

<jsp:useBean/> 태그

  • 자바빈 객체를 생성하기 위한 태그
  • jsp:useBean id=”빈 이름” class=”자바빈 클래스 명” scope=”사용 범위”/>
    • id : 자바빈 객체의 변수명
    • class : 클래스명. 클래스가 패키지 안에 작성되어 있다면 패키지 경로까지 적어
      주어야 한다.
    • scope : 사용 범위. request, page, session, application 네 종류가 있으며 기본 값은 page 이다.

예제

BeanTest.java

package test;

public class BeanTest {
	private String name="kim";
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name=name;
	}
}

BeanTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<html>
<head>
<title>JavaBean Test</title>
<body>
<b>자바빈 사용 예제</b>
<h3><%=beantest.getName() %></h3>
</body>
</head>
</html>

BeanTest.jsp 실행 시 화면

  • getName() 으로 kim 가져옴

<jsp:setProperty/> 태그

  • 자바빈 클래스의 속성 값을 설정하기 위한 태그
  • jsp:setProperty name=”빈 이름” property=”속성명” value=”설정할 속성 값”/>
    • <jsp:setProperty name=”beantest” property=”name” value=”BeanTest!”/>

예제

BeanTest.jsp(수정)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<jsp:setProperty name="beantest" property="name" value="BeanTest!" />
<html>
<head>
<title>JavaBean Test</title>
<body>
<b>자바빈 사용 예제</b>
<h3><%=beantest.getName() %></h3>
</body>
</head>
</html>
  • <jsp:setProperty name="beantest" property="name" value="BeanTest!" />
  • = public void setName(String name) { this.name=name; }

BeanTest.jsp(수정) 실행 시 화면

  • value에 있는 BeanTest!! 이 출력 됨

클라이언트에서 전송되어 오는 파라미터 값을 속성 값으로 할당할
경우 value 대신 param을 이용

예제

BeanTest.jsp (수정2)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<jsp:setProperty name="beantest" property="name" param="name" />
<html>
<head>
<title>JavaBean Test</title>
<body>
<b>자바빈 사용 예제</b>
<h3><%=beantest.getName() %></h3>
</body>
</head>
</html>

beanTest.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="BeanTest.jsp">
	이름:<input type="text" name="name"/>
	<br/>
	<input type="submit" value="전송" />
</form>
</body>
</html>

beanTest.html 실행 시 화면

전송 시 화면

  • Html 에서 전송 된 name(lee로 작성) 을 param 으로 받아서 lee 출력

클라이언트에서 전송되어 오는 파라미터 이름이 빈 객체의 속성명과
모두 같다면 다음과 같이 한번에 할당할 속성명을 지정할 수 있다.

  • <jsp:setProperty name=”빈 이름” property=”*”/>

<jsp:getProperty/>태그

  • 자바빈 클래스의 속성 값을 가져오기 위한 태그
  • <jsp:getProperty name=”빈 이름” property=”속성명”/>

예제

BeanTest.jsp(수정3)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="beantest" class="test.BeanTest" scope="page"/>
<jsp:setProperty name="beantest" property="name" param="name" />
<html>
<head>
<title>JavaBean Test</title>
<body>
<b>자바빈 사용 예제</b>
<h3><%=beantest.getName() %></h3>
<h3><jsp:getProperty name="beantest" property="name"/></h3>
</body>
</head>
</html>

BeanTest.jsp(수정3) 실행 시 화면

  • <jsp:getProperty name=*"beantest"* property=*"name"*/> 이 태그가 자바빈 객체에 있는 아래 메소드()를 실행
  • public String getName() { return name; }

자바빈의 영역

  • 자바빈의 영역(Scope)은 page, request, session, application 이렇게 네 가지로 나누어지며, scope를 지정하지 않을 경우 기본 값은 page가 된다.
영역설명
page현재 페이지의 범위에만 한정된다. 페이지가 변경되면 유지되지 않는 scope 이
requestrequest 요청을 받고 처리를 완료할 때까지 생존되는 scope이다.
session클라이언트 당 하나씩 할당되는 영역이다. 클라이언트가 브라우저를 종료하기 전까지 유지되는 scope 이다.
application사이트 전체의 범위를 가지며, 서버가 종료되기 전에는 계속 유지되는 scope 이다.
profile
essential

0개의 댓글