자바빈즈
“자바 클래스(class)”**이며, 보통 .java 소스 파일로 작성 → 컴파일하면 .class 가 됩니다.
특별한 종류의 파일이 아니라 일반 자바 클래스(POJO) 에 규약을 지킨 것을 “자바빈즈”라고 함
자바빈즈 규약(컨벤션)
- public 클래스
- 기본 생성자(파라미터 없는 생성자) 존재
- 필드는 private
- getter/setter 메서드 제공
- getName()/setName(...), boolean은 isActive()/setActive(...)
- (선택) implements Serializable — 세션 저장 등에 유용
예시(Member.java)
package model;
import java.io.Serializable;
public class Member implements Serializable {
private String id;
private String name;
private boolean active;
public Member() {} // 기본 생성자
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public boolean isActive() { return active; }
public void setActive(boolean active) { this.active = active; }
}
JSP에서 쓰는 법
<jsp:useBean id="m" class="model.Member" scope="session" />
<jsp:setProperty name="m" property="id" value="jinju" />
<jsp:setProperty name="m" property="name" value="진주" />
<jsp:getProperty name="m" property="name" />
- scope는 page | request | session | application 중 선택.
- 배치 위치: /WEB-INF/classes/model/Member.class (패키지 경로와 동일)
**
- 자바빈즈 = 규약을 따르는 자바 클래스
- 작성은 .java로 하고, 사용은 컴파일된 .class 로
- JSP/서블릿에서 데이터를 담고 전달하는 용도로 자주 씁니다.
- (참고: EJB(Enterprise JavaBeans)와는 다른 개념!)
자바빈즈 액션 태그
JSP페이지의 주요 가능 중 하나는 데이터를 보여주는 것.
프로그램의 효율을 높이기 위해 화면을 출력하는 부분인 HTML과 데이터를 처리하는 로직 부분인 JAVA를 구분하여 작성하고, 로직 부분의 코드에는 자바빈즈라는 클래스를 사용함.
자바빈즈는 동적 콘텐츠 개발을 위해 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법. JSP페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바 코드를 따로 분리하여 작성하는 것을 의미.
JSP와 자바빈즈의 흐름.
- 웹 브라우저가 JSP 페이지에 요청을 전송
- JSP 페이지는 자바빈즈와 통신
- 자바빈즈가 데이터베이스에 연결
- JSP 페이지가 브라우저에 응답
자바빈즈는 데이터 표현을 목적으로 하는 자바 클래스이기 때문에 기존의 자바 클래스를 작성하는 방법과 동일.
자바빈즈는 데이터를 담는 멤버 변수인 프로퍼티(property)와 데이터를 가져오거나 저장하는 메소드로 구성됨.
- 자바 클래스는 java.io.Serializable 인터페이스를 구현해야함.
- java.io.Serializable 인터페이스는 생략할 수 있지만 자바빈즈 규약에 명시된 내용으로, 자바빈즈에 저장된 프로퍼티를 포함한 채로 파일 시스템에 저장되거나 네트워크로 전송될 수 있도록 객체 직렬화를 제공해야 하므로 implement해야함.
- 인수가 없는 기본 생성자가 있어야함.
- 모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정
- 모든 멤버 변수인 프로퍼티는 Getter/Setter( ) 메소드가 존재해야 함.Setter( ) 메소드는 멤버 변수에 값을 저장할 수 있는 메소드
- Getter( )메소드는 멤버 변수에 저장된 값을 가져올 수 있는 메소드
** 이클립스 [Source]-[Generate Getters and Setters]클릭하면 자동 추가
useBean 액션 태그로 자바빈즈 사용하기
useBean 액션 태그는 JSP페이지에서 자바빈즈를 사용하기 위해 실제 자바 클래스를 선언하고 초기화하는 태그.
<jsp:useBean id="자바빈즈 식별이름" class="자바빈즈 이름" scope="범위" />
<jsp:useBean id="member" class="com.dto.MemberBeen" scope="page" />
설정된 id 속성과 scope 속성을 바탕으로 자바빈즈의 객체를 검색하고, 객체가 발견되지 않으면 빈 객체를 생성.
useBean 액션태그 속성
| 속성 | 설명 |
| id | 자바빈즈를 식별하기 위한 이름 |
| class | 패키지 이름을 포함한 자바빈즈 이름. 자바빈즈는 인수가 없는 기존 생성자가 있어야 하며 추상 클래스를 사용할 수 없다. |
| scope | 자바빈즈가 저장되는 영역 설정. page(기본값), request, session, application 중 하나의 값을 사용. |
setProperty 액션 태그로 프로퍼티의 값 저장하기
useBean 액션태그와 함께 자바빈즈의 Setter( )메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장하는 태그
<jsp:setProperty name="자바빈즈 식별이름" property="프로퍼티 이름" value="값" />
<jsp:setProperty name="member" property="id" value="admin" />
폼 페이지로부터 전달되는 요청 파라미터의 값을 직접 저장하거나 자바빈즈의 프로퍼티로 변경하여 값을 저장할 수 있으며, 모든 자바빈즈 프로퍼티 이름과 동일하게 요청 파라미터를 설정할 수 있음.
setProperty 액션 태그 속성
| 속성 | 설명 |
| name | useBean 태그에 id속성 값으로 설정된 자바빈즈를 식별하기 위한 이름 |
| property | 자바빈즈의 프로퍼티 이름. 만약 프로퍼티 이름에 ‘*’를 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티의 Setter( )메소드에 전달됨을 의미 |
| value | 변경할 자바빈즈의 프로퍼티 값. 만약 프로퍼티 값이 null이거나 존재하지 않는 요청 파라미터인 경우에는 SetProperty액션 태그가 무시됨. |
| param | 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름. param과 value를 동시에 모두 사용할 수 없으며 하나를 선택하여 사용하는 것은 가능. |
// 자바빈즈의 프로퍼티 값 출력 예
<% out.println("아이디 : " +member.getId()); %>
setPorperty 액션 태그를 사용하려면 useBean 액션 태그에 id속성 값이 설정되어 있어야함.
// useBean 액션태그에 id 속성 값
// setPorperty 액션 태그를 사용하려면 useBean 액션 태그에 id속성 값이 설정되어 있어야함.
<jsp:useBean id="member" class="com.dto.MemberBean" scope="page" />
- 요청 파라미터 이름과 자바빈즈의 프로퍼티 이름이 일치하는 경우
// 폼 페이지에서 요청 파라미터 이름이 자바빈즈의 프로퍼티 이름과 동일아여 id로 값이 전달되는 예
// 폼 페이지
<form action="memberProcess.jsp" method="post">
<input name="id" value="admin" />
</form>
// jsp 페이지
<jsp:setProperty name="member" property="id" />
- 요청 파라미터 이름과 자바빈즈의 프로퍼티 이름이 일치하지 않는 경우
// 폼 페이지에서 요청 파라미터 이름이 자바빈즈의 프로퍼티 이름과 동일하지 않아
// id가 아닌 userId로 값이 전달 되는 예
/// 폼 페이지
<<form action="memberProcess.jsp" method="post">
<input name="userId" value="admin" />
<</form>
// jsp 페이지
<jsp:setProperty name="member" property="id" param="userId" />
- 요청 파라미터 이름과 자바빈즈의 프로퍼티 이름이 모두 일치하는 경우 (*)
// 폼 페이지에서 모든 요청 파라미터 이름이 자바빈즈의 모든 프로퍼티 이름과 동일하게 값이 전달되는 예
// 폼 페이지
<form action="memberProcess.jsp" method="post">
<input name="id" value="admin" />
<input name="name" value="관리자" />
</form>
// jsp 페이지
<jsp:setProperty name="member" property="*" />
getProperty 액션 태그로 프로퍼티의 값 가져오기
useBean 액션 태그와 함께 자바빈즈의 Getter( )메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 가져오는 태그
<jsp:getProperty nam="자바빈즈 식별이름" property="프로퍼티 이름" />
<jsp:getProperty name="member" property="name" />
| 속성 | 설명 |
| name | useBean 태그에 id 속성 값으로 설정된 자비빈즈를 식별하기 위한 이름 |
| property | 자바빈즈의 프로퍼티 이름. 만약 프로퍼티 이름에 ’*’를 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티의 Getter( )메소드에 전달됨을 의미. |
// 자바빈즈의 프로퍼티 값 출력 예
<% out.println(member.getName()); %>
*화면 이동 *
화면 → 화면 : <a>
화면 → 서버 : <form> // <a>도 되긴되는데 다름
서버 → 화면 : forward 액션 태그
서버 → 서버 : redirect (대부분은 서버 → 서버일때 사용) 자바 → db, db→ 자바로 이동하는
게시글 작성 → 등록 → 자바 → insert메소드 → db → select → 해당 개시글 선택 메소드 → 화면
'JSP' 카테고리의 다른 글
| [JSP] 기본 내장(Implicit) 객체 정리 (1) | 2025.12.03 |
|---|---|
| [JSP] 내장 객체_3 (0) | 2025.12.03 |
| [JSP] 내장 객체_2 (0) | 2025.12.03 |
| [JSP] 스크립트 태그 (0) | 2025.12.03 |
| [JSP] JSP(JavaServer Pages) (0) | 2025.12.03 |