웹사이트는 디자이너와 프로그래머가 함께 개발 합니다.
프로그래머가 JSP페이지를 작업시 자바코드 만을 입력하게 되면 소스가 길어지고 디자이너 입장에서 알아보기 힘듭니다.
디자이너가 JSP 페이지를 수정하기 힘들어 효율이 떨어 집니다. 그래서 등장한것이 JAVA Bean 입니다.
일반적으로 정보를 표현할 때에는 자바빈(java bean)의 형태를 갖는 클래스를 사용하게 됩니다.
예를 들어, 회원정보, 게시판 글 등의 정보를 출력할때, 정보를 저장하고 있는 자바빈 객체를 사용하게 됩니다.
자바빈(JavaBean)
모듈화된 MVC에서 View가 JSP라면, M(Model)에 해당하는 것이 Bean 입니다.
모델이 프로그램 로직을 가지고 있고 DB와 연동을 해서 작업을 하듯이 자바빈도 동일한 역할을 합니다.
(자바로 작성되어진 컴포넌트들을 칭합니다.)
JSP와의 연동을 위해 만들어진 자바 컴포넌트인 Bean을 통해 JSP와 클래스들간에 데이터를 쉽게 연동하고,
또한 데이터베이스 연동이나 뷰 데이터 교환에 사용 됩니다.
JAVA Bean은 java코드를 기반으로 만들어진 것 입니다.
데이터를 표현하는 것을 목적으로 하는 자바 클래스로서, 다음과 같은 형태를 가지고 있습니다.
public class BeanClassName implements java.io.Serializable {
/* 값을 저장하는 필드 */
private String value;
/* BeanClassName의 기본 생성자 */
public BeanClassName() {
}
/* 필드의 값을 읽어오는 값 */
public String getValue() {
return value;
}
/* 필드의 값을 변경하는 값 */
public void setValue(String value) {
this.value = value;
}
}
자바빈은 다른 클래스와는 달리 규정되어있는 규약을 따라서 작성해야 합니다.
1. 멤버변수마다 별도의 get/set 메소드가 존재해야합니다.
메소드명은 멤버변수와 일치해야합니다
2. get메소드는 파라미터가 존재하지 않아야합니다
3. set메소드는 반드시 하나 이상의 파라미터가 존재해야 합니다
4. 빈즈 컴포넌트의 속성은 반드시 읽기 또는 쓰기가 가능해야 합니다
5. 생성자는 파라미터가 존재하지 않아야 합니다
JSP 프로그래밍에서 사용되는 자바빈 클래스는 위 예시 코드와 같이
데이터를 저장하는 필드
데이터를 읽어올 때 사용되는 메서드
값을 저장할 때 사용되는 메서드로 구성됩니다.
자바빈은 프로퍼티, 지속성, 이벤트 등 다양한 특징을 갖는데, JSP 프로그래밍에서는 프로퍼티가 가장 많이 사용 됩니다.
자바빈 프로퍼티
프로퍼티는 자바빈에 저장되어 있는 값을 나타냅니다.
메서드 이름을 사용해서 프로퍼티의 이름을 결정하게 되는데, 예를들어 프로퍼티의 이름이 maxAge이고
값의 타입이 int라고 하면, 프로퍼티와 관련된 메서드의 이름은 다음과 같이 결정 됩니다.
public void setMaxAge(int value);
public int getMaxAge();
프로퍼티의 값을 설정하는 메서드의 경우 프로퍼티의 이름 중 첫 글자를 대문자로 변환한 문자열 앞에 set을 붙이고,
프로퍼티의 값을 읽어오는 메서드의 경우 프로퍼티의 이름 중 첫 글자를 대문자로 변환한 문자열 앞에 get을 붙입니다.
프로퍼티의 이름과 필드의 이름은 갖지 않아도 됩니다.
프로퍼티의 타입이 boolean일 경우 get 대신에 is를 앞에 붙일 수도 있습니다.
프로퍼티의 값에는 읽기전용 프로퍼티와 읽기/쓰기 프로퍼티가 존재합니다.
읽기 전용 프로퍼티 - get 또는 is 메서드만 존재하는 프로퍼티
읽기/쓰기 프로퍼티 - get/set 또는 is/set 메서드가 존재하는 프로퍼티
자바빈 프로퍼티의 타입은 다음과 같이 배열로도 정의할 수 있습니다.
public int[] getMark()
public void setMark(int[] values)
<jsp:useBean> 태그를 이용한 자바 객체 사용
: JSP페이지에서 사용할 자바빈 객체를 지정해주는 기능을 합니다.
<jsp:useBean id="[빈이름]" class="[자바빈클래스이름]" scope="[범위]" />
id - JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름을 명시합니다.
class - 패키지 이름을 포함한 자바빈 클래스의 완전한 이름을 입력합니다.
scope - 자바빈 객체가 저장될 영역을 지정. page, request, sessioin, application중 하나를 값으로 가집니다.
영역 | 설명 |
page | 현재 페이지의 범위에만 한정됩니다. 페이지 처리가 끝나면 유효하지 않습니다. |
request | Request요청을 받고 처리를 완료할때까지 생존되는 scope입니다 |
session | 사이트 전체의 범위를 갖지만, 지속시간 동안만 유지되는 scope입니다. |
application | 사이트 전체의 범위를 갖고, 계속 유지될 수 있는 scope입니다. |
<jsp:getProperty>액션 태그와 <jsp:setProperty>액션 태그
<jsp:setProperty name="[자바빈]" property="이름" value="[값]" />
name - 프로퍼티의 값을 변결할 자바빈 객체의 이름. <jsp:useBean>액션 태그의 id 속성에서 지정한 값을 사용 합니다.
property - 값을 지정할 프로퍼티의 이름 입니다.
value - 프로퍼티의 값. 표현식을 사용할 수 있습니다.
value 속성 대신에 param속성을 사용할 수도 있습니다.
param 속성은 파라미터의 값을 프로퍼티의 값으로 지정할 때 사용 합니다.
(param 속성과 value속성은 함께 사용할 수 없습니다.)
<jsp:getProperty name="자바빈이름" property="프로퍼티이름" />
name - <jsp:useBean>의 id 속성에서 지정한 자자빈 객체의 이름 입니다.
property - 출력할 프로퍼티의 이름 입니다.
자바빈 프로퍼티 타입에 따른 값 매칭
자바빈 프로퍼티의 타입이 int인 경우 <jsp:setProperty> 액션 태그는 값을 어떻게 처리할까요?
<jsp:setProperty name="someBean" property="width" value="100" />
"100"은 int 타입으로 변환되어 저장됩니다. <jsp:setProperty>액션 태그는 프로퍼티 타입에 따라서 알맞게 값을 처리하며,
값이 ""인 경우 기본 값이 사용 됩니다.
출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rbamtori&logNo=220760147541
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] System.exit()은 무엇일까? (0) | 2023.03.10 |
---|---|
[JAVA] Logging이란? (0) | 2023.03.10 |
[JAVA] 데몬스레드란? (0) | 2023.03.03 |
[JAVA] 컴파일, 빌드, 배포에 대해 이해하기 (0) | 2023.01.17 |
[JAVA] String.format() - %d, %n, %f, %c, %s, %b (0) | 2022.12.28 |